見出し画像

[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)


この記事が気に入ったらサポートをしてみませんか?