Django公式ドキュメントより
Djangoのパワフルな特徴の1つは、自動的に生成されるadminインタフェースです。
あなたのモデルクラスからメタデータを読み取り、モデル中心のインタフェースを提供します。
このインタフェースのおかげで、ユーザはあなたのサイトのコンテンツを操作することができます。
Djangoドキュメント|Djangoのadminサイト
つまり、自分で管理サイト用のテンプレートを作らなくてもオッケー!
モデルを作成して読み込ませれば管理サイトができちゃう!すごい!頭いい!!
モデルの読み込み
from django.contrib import admin
from myapp.models import Author
admin.site.register(Author)
ここでは、form myapp.models import Author
で、
myappというアプリケーションからAuthorというモデルを読み込むことを可能にしている。
admin.site.register(Author)
でadminページに指定のアプリケーションの項目(ここではmyapp)が表示されるようになる。
あとは、
python manage.py createsuperuser
で管理者ユーザーを登録、adminページにログインしてエラーがないか確認してみる。
これは最低限の設定で、全部デフォルトのとりあえず表示させてる状態って感じ。
adminページの見た目を変えたいとか、いろいろカスタマイズしたい場合は、上とはちょっと違う書き方をする。
from django.contrib import admin
from myapp.models import Author
class AuthorAdmin(admin.ModelAdmin):
pass
admin.site.register(Author, AuthorAdmin)
ModelAdminクラスってのを作成して、その中にカスタマイズする内容を記述していく(らしい)。
さらに、デコレータってのがあって、
from django.contrib import admin
from .models import Author
@admin.register(Author)
class AuthorAdmin(admin.ModelAdmin):
pass
この書き方でも大丈夫らしい。
違いは何ぞやと思い調べてみても難しくてわからなかった。
たぶん、@admin.register()
を使えば、管理者権限を持つユーザーしかログインできないか、
アプリケーションの項目が表示されないようになるっぽい。
カスタマイズ
あとがき
pythonとDjangoの勉強をはじめて、まだまだわかないことだらけです。
備忘録としてと理解を深めるために、メモを残していきます。
調べたことや学んだことを言葉にして説明することの難しさを実感しています。
また、用語の正しい使い方に全く自信がありません。コメントで優しく指摘していただけると嬉しいです
中途半端な状態になっているかもしれませんが、追々更新していく予定です。