はじめに
未来電子テクノロジーでインターンをしている<小栗>です。
「プログラミング初心者であるため、内容に誤りがあるかもしれません。
もし、誤りがあれば修正するのでどんどん指摘してください。
この記事は、【Django入門】簡単なブログページを作る際の大まかな流れ ~アプリケーション編~
こちらの記事の続きです!
Django Brothersというサイトをまとめた
記事になっているので、Django初心者にはおすすめです!
データベースを作る
データベースは表のようになっており、テーブルと呼ばれます。
そして、新たにテーブルを作る際、モデルを使います。
モデルとは、データベースとやりとりをするクラスのことです。
クラスとはオブジェクトの設計図のような役割を果たす物です。
このモデルは、各アプリケーション内のmodels.py
に記述します。
この内容について以下で説明します。
from django.db import models
class Blog(models.Model):
title = models.CharField(blank=False, null=False, max_length=150)
text = models.TextField(blank=True)
created_datetime = models.DateTimeField(auto_now_add=True)
updated_datetime = models.DateTimeField(auto_now=True)
def __str__(self):
return self.title
from django.db import models
について
Djangoにおけるモデル型の基本形で、Blogモデルに継承させて作成していきます。
このクラスをもとに作られたインスタンスはデータベースに保存するという設定をしています。
#####title = models.CharField(blank=False, null=False, max_length=150)
について
3行目の内容は、title
というフィールド(列)名をつけています。
このtitle
にはmodels.CharField
という型が指定されていて、文字列を入力できる様にしています。
blank=False, null=False
はフィールドが空白であることは許容されないという意味です。
max_length=150
はタイトルが最大150文字という制限がかけられています。
#####created_datetime, updated_datetime
について
これらのフィールドでは、models.DateTimeField
という型が指定されているので、日時情報が保存されるようになっています。
引数でauto_now_add, auto_now
が与えられているので、それぞれインスタンスが作成された日時、更新された日時が自動的に保存されます。
#####def __str__(self)
について
これは各インスタンスを表示する際に利用する文字列を表しています。
つまり、ブログ一覧のようなページで、タイトルを表示するのか、本文を表示するのか、はたまた追加日時を表示するのかといった設定ができます。
return self.title
とするとタイトルが、return self.text
とすると本文が表示されるということです。
マイグレーション
データベースを作成する際の流れは**「models.pyファイルで設計 → マイグレート処理で反映」**です。
従って先ほどまで作っていたmodels.pyファイルをマイグレートしてデータベースに反映させる必要があります。
その際に必要なコマンドは以下の二つです。
$ python manage.py makemigrations
$ python manage.py migrate
#####$ python manage.py makemigrations
について
django_blog/blogs/migrationsディレクトリの中にマイグレーションファイルが新たに追加されます。
マイグレーションファイルとはmodels.pyファイルで作成したデータベースの設計情報がまとめられたものです。
#####python manage.py migrate
について
マイグレーションファイルの情報をデータベースに反映させるコマンドです。
※models.pyファイルを変更した際はその都度、マイグレード処理が必要になります。
Adminページを利用する
#####スーパーユーザーアカウントを作成
$ python manage.py createsuperuser
Adminページを編集するために、admin.py
ファイルを編集します。
#####BlogモデルをAdminに追加する
from django.contrib import admin
from .models import Blog #admin.pyファイルと同じ階層にあるmodels.pyファイルで定義したBlogモデルをインポートしている。
admin.site.register(Blog) #インポートしたBlogモデルを、Adminページで利用できるようにしている。