【Django3.1】DjangoAdminの使い方
- 本記事で行うこと
- モチベーション
- 環境
- 事前準備
- Django Adminとは
- Django Adminの有効化(参考:読み飛ばして問題なし)
- データベースのマイグレーションと管理ユーザの作成
- 任意のモデル(テーブル)を登録
本記事で行うこと
- Djangoでdefaultで用意されているDjangoAdminの使い方について記載しておく。
GitHub - n-guitar/django-samples at feature/django-admin/sample.generic-view
モチベーション
- Djangoを教える時のサンプルとして利用したいため。
環境
$ sw_vers ProductName: macOS ProductVersion: 11.1 BuildVersion: 20C69
- Python 3.8.0
$ python -V Python 3.8.0
事前準備
pyenv環境
$ python -m venv env $ source env/bin/activate $ export PATH=$PWD/env/bin:$PATH
Djangoのインストール
$ pip install django==3.1.3
sample アプリケーション
以下記事で作成したものを利用します。
n-guitar.hatenablog.com
※必要に応じて上記のアプリケーションをcloneしておく
$ git clone -b sample.generic-view https://github.com/n-guitar/django-samples.git
Django Adminとは
Djangoで予め用意されている、管理インターフェースで簡単にユーザ管理を行える管理サイトを利用できる。
また作成したdatabase tabelもdefaultで作成されるadmin.pyに登録するだけで管理サイトから操作出来るようになる。
Django Adminの有効化(参考:読み飛ばして問題なし)
実はdefaultで有効化されており、利用をするために特別は努力はいらない。
が参考までに、利用するために必要な条件を記載しておく。
confug/settings.py
INSTALLED_APPS = [ 'django.contrib.admin', # 記述されていること 'django.contrib.auth', # 記述されていること 'django.contrib.contenttypes', # 記述されていること 'django.contrib.sessions', # 記述されていること 'django.contrib.messages', # 記述されていること <省略> ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', # 記述されていること 'django.contrib.messages.middleware.MessageMiddleware', # 記述されていること 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': ['templates'], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', # 記述されていること 'django.contrib.messages.context_processors.messages', # 記述されていること ], }, }, ]
confug/urls.py
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), # 記述されていること path('samplecrud/', include('samplecrud.urls')), ]
実はdefaultでurlの設定もされている。
この状態で、run serverして
$ python manage.py runserver
http://127.0.0.1:8000/admin
にアクセスして以下が表示されればOK
この次にこの管理サイトを利用する管理ユーザの作成を行う。
データベースのマイグレーションと管理ユーザの作成
データベースのマイグレーション
まずdefaultで用意されている管理用テーブルのマイグレーションを行う。
$ python manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, samplecrud, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying auth.0010_alter_group_name_max_length... OK Applying auth.0011_update_proxy_permissions... OK Applying auth.0012_alter_user_first_name_max_length... OK Applying samplecrud.0001_initial... OK Applying sessions.0001_initial... OK
samplecrud.0001_initial
以外はdefaultで用意されている管理用テーブル。
※samplecrud.0001_initial
は上記のサンプルアプリケーションをgit cloneした場合のみ一緒にマイグレーションされる。
これで管理用テーブルが作成されたので、以下のコマンドで管理ユーザの作成を行う。
管理ユーザの作成
当然本番環境で利用する際はpassword管理は注意する必要があるが、開発時は適応で問題有りません。
$ python manage.py createsuperuser Username (leave blank to use 'XXXXX'): admin Email address: test@test.com Password: Password (again): Superuser created successfully.
この状態で、run serverして
$ python manage.py runserver
http://127.0.0.1:8000/admin
にアクセスして作成した管理ユーザでログインすると以下の管理サイトを利用できる用になる。
ここからユーザやグループの管理が行える。
任意のモデル(テーブル)を登録
アプリケーションで作成した任意のモデル(テーブル)をこの管理サイトに登録し、簡易的なテーブルの操作が行えるようになる。
登録方法は簡単で以下の用に記述するだけ。
samplecrud/admin.py
from django.contrib import admin from .models import Todo # 追記 admin.site.register(Todo) # 追記
この状態で再び、
http://127.0.0.1:8000/admin
にアクセスすると、テーブルを操作出来る。
Todosが表示されており、レコード追加できる。
この状態で、
http://127.0.0.1:8000/samplecrud/list/
にアクセスして作成したListViewで見てみると追加したレコードが表示されていることがわかる。
余談ではあるが、DjangoでModelを作成するとdefaultで複数形になる。
正しい複数形ではなくsが不自然につく場合のほうが多いが、ModelのMeta Optionを使えば変更出来る。
- 公式document
Model Meta options | Django documentation | Django
以上、DjangoAdminの使い方でした。