目次
初めに
この記事は連載記事です。
今回やること
Django REST frameworkを使いながらビュー、ルート、モデル作成などを行う。
アプリケーションの作成
新しくアプリを作ります。
プロジェクトとは違うもので、こちらは機能ごとにもっと細かく分けます。
プロジェクトは1つしか作らないのに対してアプリは複数作れます。
今回は1個しかつくらないかも?
docker-compose run backend python manage.py startapp blog
これでblogというアプリが作れました。
アプリを作ったときは必ずsetting.py
のINSTALLED_APPS
にアプリ名を追加します。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',#追加
]
モデルの作成
これを作ることでデータベースを簡単に操作できるようになります。
models.py
今回作るモデルはPostモデルとCommentモデルです。
以下をコピペしましょう。
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
class CommentModel(models.Model):
author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
target_post = models.ForeignKey(Post, on_delete=models.SET_NULL, null=True)
comment = models.TextField(blank=True, null=True)
published_date = models.DateTimeField(auto_now_add=True)
マイグレーション
モデルを変更したときもマイグレーションが必要です。
docker-compose run backend python manage.py makemigrations blog
docker-compose run backend python manage.py migrate blog
管理者画面の作成
admin.py
blog/adminを次のように変更します。
from django.contrib import admin
from .models import Post, Comment
admin.site.register(Post)
admin.site.register(Comment)
ついさっき作ったPostを管理者画面と紐づけました。
createsuperuser
管理者画面を使うには管理者のアカウントが必要です。
これはコマンドで作れます。
docker-compose run backend python manage.py createsuperuser
コマンドを打ち込み、username, email, passwordを入力します。
今回はこのようにしました。
実際はパスワードは表示されません。
Starting electronicjournal_db_1 ... done
ユーザー名 (leave blank to use 'root'): admin
メールアドレス: admin@email.com
Password: adminpass
Password (again): adminpass
このパスワードは ユーザー名 と似すぎています。
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.
パスワードが簡単すぎて怒られましたが気にしない。
管理者画面
サーバを立ち上げ、
docker-compose up
http://127.0.0.1:8000/admin/ にアクセスします。
先ほど設定したusernameとpasswordを入力。
ログインすると次のような画面になります。
ここでPostやCommentを投稿したり、ユーザーを作ったりできます。
しかしすぐにもう少し使いやすい画面を作るのでここで弄らなくても大丈夫。
/admin
にアクセスすれば簡単にいろいろ弄れることは覚えておきましょう。
次回
Django REST frameworkでAPIを作ります。