LoginSignup
2
1

More than 3 years have passed since last update.

Django-Reactでブログ作成part2:モデルの作成と管理者画面

Last updated at Posted at 2019-07-25

目次

  1. Django-Reactでブログ作成part1:docker-composeでプロジェクトを立ち上げ
  2. Django-Reactでブログ作成part2:モデルの作成と管理者画面 <-- 今ここ

初めに

この記事は連載記事です。

今回やること

Django REST frameworkを使いながらビュー、ルート、モデル作成などを行う。

アプリケーションの作成

新しくアプリを作ります。
プロジェクトとは違うもので、こちらは機能ごとにもっと細かく分けます。
プロジェクトは1つしか作らないのに対してアプリは複数作れます。
今回は1個しかつくらないかも?

docker-compose run backend python manage.py startapp blog

これでblogというアプリが作れました。

tree1.PNG

アプリを作ったときは必ずsetting.pyINSTALLED_APPSにアプリ名を追加します。

mysite/settings.py
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モデルです。
以下をコピペしましょう。

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

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を次のように変更します。

blog/admin.py
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を入力。

admin2.PNG

ログインすると次のような画面になります。

admin3.PNG

ここでPostやCommentを投稿したり、ユーザーを作ったりできます。
しかしすぐにもう少し使いやすい画面を作るのでここで弄らなくても大丈夫。
/adminにアクセスすれば簡単にいろいろ弄れることは覚えておきましょう。

次回

Django REST frameworkでAPIを作ります。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1