[Lightsail Django]No3 adminページを設定する
Django Adminは、Djangoに標準搭載されている機能で、データベースやユーザー情報をブラウザ上で管理するためのサイトです。
amazon LightsailにてDjangoを使用したWEBアプリ構築済みの前提で、sqlite3のDBを使用し、adminページの表示、ログインをさせるところまでを説明します。
amazon LightsailにてDjangoを使用したWEBアプリ構築についての説明は以下
今回使用するプロジェクト名について
以下の通りに設定していきますので、以降については適宜置き換えて解釈していただければと思います。
プロジェクト名:TEST
アプリ名:APP_TEST
settings.pyのDBの設定値のおさらい
admin機能はDBを使用する必要があるので、まずDBの設定周りについておさらいをしていきます。
DBの設定については、settings.pyに記載されているので、まずはこちらのファイルを参照し、どのDBが使用されているかを確認していきます。
デフォルトではsqlite3のDBを使用するように設定されていますので、特に変更は不要です。
view /opt/bitnami/projects/TEST/TEST/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
ENGINE
どのDBを使うかを指定します。
'django.db.backends.sqlite3'
'django.db.backends.postgresql'
'django.db.backends.mysql'
'django.db.backends.oracle'
などを設定していきます。
NAME
データベースのファイル名を指定します。
sqliteを使用している場合、DBはWEBサーバー上に配置される形となります。
BASE_DIR=/opt/bitnami/projects/TESTの場合、
/opt/bitnami/projects/TEST/db.sqlite3に配置されるイメージとなります。
db.sqlite3ファイル、ディレクトリに権限付与する
sqliteを操作する上で、sqlite関連のファイルやディレクトリに権限が不足しており、DB書き込み時などでエラーとなってしまいますので、権限を付与していきます。
adminページでログイン時、500エラー(attempt to write a readonly database)が発生する場合は、このあたりの権限設定を疑ってみましょう。
プロジェクトディレクトリに権限付与
db.sqlite3の一階層上のプロジェクトディレクトリ:読み込み、書き込み、実行権限を付与していきます。
「TEST」はプロジェクト名となります。
cd /opt/bitnami/projects
ls -ltr
total 4
drwxr-xr-x 6 bitnami bitnami 4096 Feb 6 01:12 TEST
chmod 767 TEST
DBファイルに権限付与
db.sqlite3:読み込み、書き込み権限を付与
cd /opt/bitnami/projects/TEST
ls -ltr db.sqlite3
-rw-r--r-- 1 bitnami bitnami 135168 Feb 5 07:55 db.sqlite3
chmod 646 db.sqlite3
ls -ltr db.sqlite3
-rw-r--rw- 1 bitnami bitnami 135168 Feb 6 02:50 db.sqlite3
DBを用意する(マイグレートする)
admin機能はDBを使用するので、migrateしDBにテーブルを反映していきましょう。
マイグレート
migrateとは、モデル(テーブル定義)をデータベースに反映させるコマンドです。
Django環境構築後の初のマイグレートであれば、デフォルトで用意されているadminなどのテーブル群を作成していくイメージとなります。
cd /opt/bitnami/projects/TEST/APP_TEST
python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, 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 sessions.0001_initial... OK
管理ユーザー作成、パスワード変更
adminページで使用する管理ユーザーを作成していきます。
ユーザー作成
python manage.py createsuperuser
パスワード変更(必要に応じて)
python manage.py changepassword <ユーザー名>
adminページで編集対象とするテーブルを追加
admin.pyに編集対象とするテーブルを追加する
adminページでは自分で作成したテーブルなどのレコードの操作を画面上から実施することができ、編集対象となるようadmin.pyを修正していきます。
以下は、「Blog」テーブルをadminページで編集対象とする場合の設定例です。必要に応じ、編集対象とするテーブルを追加していきましょう。
vim /opt/bitnami/projects/TEST/APP_TEST/admin.py
# Register your models here.
from .models import Blog
admin.site.register(Blog)
この記事が気に入ったらサポートをしてみませんか?