アプリの作成
manage.py
ファイルがあるディレクトリで、
$ python3 manage.py startapp blog
bin db.sqlite3 lib mysite
blog include manage.py pyvenv.cfg
これで新しくblogディレクトリが作成されました。
アプリケーションを作成したら、Djangoにそれを使うように伝えないといけません。
mysite/settings.py
ファイルの中で指定します。まずINSTALLED_APPSをみつけて、その上に'blog'という一行を追加します。
mysite/settings.py
をエディタで開き、'blog',を追加します。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
]
blog/models.py
ファイルでModelsと呼ばれる全てのオブジェクトを定義します。これがブログポストを定義する場所です。
blog/models.py
をエディタで開いて全部削除し、下記のコードを書きます。
from django.db import models
from django.utils import timezone
class Post(models.Model):
author = models.ForeignKey('auth.User',on_delete=models.CASCADE)
title = models.CharField(max_length=200)
text = models.TextField()
created_date = models.DateTimeField(default=timezone.now)
published_date = models.DateTimeField(blank=True, null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.title
models.Model
はポストがDjango Modelという意味で、Djangoが、これはデータベースに保存すべきものだと分かるようにしています。
フィールドのタイプを決めなければいけません。
・models.CharField - テキスト数を定義するフィールド
・models.TextField - これは制限無しの長いテキスト
・models.DateTimeField - 日付と時間のフィールド
・models.ForeignKey - これは他のモデルへのリンク
データベースにモデル用のテーブルを作る
新しいモデルをデータベースに追加します。まず、今作成したモデルの中で少し変更があったことをDjangoに知らせます。
$ python3 manage.py makemigrations blog
Migrations for 'blog':
blog/migrations/0001_initial.py
- Create model Post
$ python3 manage.py migrate blog
Operations to perform:
Apply all migrations: blog
Running migrations:
Applying blog.0001_initial... OK
これでポストモデルがデータベースに入りました。
ポストを追加・編集・削除
blog/admin.py
ファイルをエディタで開き、以下のように変更します。
from django.contrib import admin
from .models import Post
admin.site.register(Post)
前回定義したPostモデルをimportしています。モデルをadminページで見れるようにするには、モデルをadmin.site.register(Post)
で登録する必要があります。
次に、ポストモデルを見ます。Webサーバーを走らせるには、以下のコードを実行します。
$ python3 manage.py runserver
http://127.0.0.1:8000/admin/
このような画面が出てくると思います。
ログインするには、superuser (サイトの全てを管理するユーザー)を作る必要があります。
一旦、ターミナルでcommand+N
で別のタブを作り、myvenvに移動し、
$ python3 manage.py createsuperuser
を入力し、続けて、ユーザー名、メールアドレス、パスワードを入力してください。
あとでログインするときに使うので、わかりやすいものにしてください。
全て入力したら、Superuser created successfully.
と出てきます。
そしたら、ブラウザに戻って、先ほど作成したsuperuserでログインします。
そしたら試しにPostsにいき適当に書いて保存して見ましょう。
保存できたら成功です!!!