【Django】簡単なSNSアプリを開発する② ~モデルの作成、管理画面~
スポンサードリンク
おはようございます。Shotaです。
今回も、前回に引き続きDjangoでSNSアプリの開発方法について解説していきます。
今回の記事では、投稿内容のモデルを作成していきます。
▼前回の記事はコチラ
shotanukumizu-1000.hatenablog.com
プロジェクト本体のurls.pyへの追記
Djangoのプロジェクト本体を機能させるために、_project/urls.py
で以下のコードを書いてください。
#_project/urls.py from django.contrib import admin from django.urls import path, include from django.conf.urls.static import static from django.conf import settings urlpatterns = [ path('admin/', admin.site.urls), #管理サイトへのアクセス path('mdeditor/', include('mdeditor.urls')) #Markdownエディタを実装するため ] if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
軽く、こちらのコードについて説明していきます。
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
こちらのコードは、画像や写真をアップロードする際に必要です。_project/urls.py
で設定してある変数urlpatterns
に画像にアクセスする際のurlをここで予め設定しておきましょう。(設定しておかないとエラーが発生します)
モデルの作成
_app/models.py
で以下のコードを書いてください。
#_app/models.py from django.db import models from mdeditor.fields import MDTextField TITLE_CHOICES = ( ('danger', '重要'), ('warning', '連絡'), ('info', 'イベント'), ('success', 'その他'), ) class ArticleModel(models.Model): name = models.CharField(max_length=70) tag = models.CharField(max_length=50, choices=TITLE_CHOICES) title = models.CharField(max_length=100) content = MDTextField() image = models.ImageField(upload_to='') created_at = models.DateField(verbose_name='作成日', auto_now=True) def __str__(self): return self.title
上記のコードで設定しているモデルは以下のとおりです。
- 名前:70文字以内
- タグ:定数
TITLE_CHOICES
で予め選択肢を用意して、「重要」、「連絡」、「イベント」、「その他」のうちから一つ選択させる
- タイトル:100文字以内
- 投稿内容:Markdown形式で書かせる。文字数の制限なし
- 画像:画像をアップロードさせる。
- 投稿日時:投稿が作成されると同時に、作成された日付を自動で設定する
追加で、以下のコードについて軽く説明しておきます。
def __str__(self): return self.title
これは管理サイトにアクセスする際に投稿内容のタイトルを表示させるためのものです。
あとはモデルの内容をデータベースに反映させましょう。以下のコードを書いてください。
$ python manage.py makemigrations $ python manage.py migrate
このコマンドを実行すると、以下のようなファイル(_app/migrations/0001_initial.py
)が出力されています。
# _app/migrations/0001_initial.py from django.db import migrations, models import mdeditor.fields class Migration(migrations.Migration): initial = True dependencies = [ ] operations = [ migrations.CreateModel( name='ArticleModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=70)), ('title', models.CharField(choices=[('danger', '重要'), ('warning', '連絡'), ('info', 'イベント'), ('success', 'その他')], max_length=100)), ('content', mdeditor.fields.MDTextField()), ('created_at', models.DateField(auto_now=True, verbose_name='作成日')), ], ), ]
このようなファイルが出力されていたら、モデルの完成です。
管理画面にモデルを登録
_app/admin.py
にアクセスして、以下のコードを書いてください。
#_app/admin.py from django.contrib import admin from .models import ArticleModel admin.site.register(ArticleModel)
これで_app/models.py
で書いたArticleModel
をDjangoの管理サイトに反映できます。
管理画面にログイン
以下のコマンドを入力して、127.0.0.1:8000/admin
にアクセスし、ログインしてください。そうすればDjangoの管理サイトにアクセスできます。(下記の画像参照)
$ python manage.py runserver
こちらのサイトにアクセスできれば、適当にモデルを作成してください。(下記の画像参照)
おわりに
今回の記事では、Djangoでモデルの作成, 管理画面へのアクセスについて詳細に解説しました。
次回の記事では、Djangoのルーティング設定について詳細に解説していきます。