1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

django開発メモ admin.py

Posted at

Django公式ドキュメントより

Djangoのパワフルな特徴の1つは、自動的に生成されるadminインタフェースです。
あなたのモデルクラスからメタデータを読み取り、モデル中心のインタフェースを提供します。
このインタフェースのおかげで、ユーザはあなたのサイトのコンテンツを操作することができます。
Djangoドキュメント|Djangoのadminサイト

つまり、自分で管理サイト用のテンプレートを作らなくてもオッケー!
モデルを作成して読み込ませれば管理サイトができちゃう!すごい!頭いい!!

モデルの読み込み

admin.py
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)が表示されるようになる。

あとは、

command
python manage.py createsuperuser

で管理者ユーザーを登録、adminページにログインしてエラーがないか確認してみる。
これは最低限の設定で、全部デフォルトのとりあえず表示させてる状態って感じ。

adminページの見た目を変えたいとか、いろいろカスタマイズしたい場合は、上とはちょっと違う書き方をする。

admin.py
from django.contrib import admin
from myapp.models import Author

class AuthorAdmin(admin.ModelAdmin):
    pass
admin.site.register(Author, AuthorAdmin)

ModelAdminクラスってのを作成して、その中にカスタマイズする内容を記述していく(らしい)。

さらに、デコレータってのがあって、

admin.py
from django.contrib import admin
from .models import Author

@admin.register(Author)
class AuthorAdmin(admin.ModelAdmin):
    pass

この書き方でも大丈夫らしい。
違いは何ぞやと思い調べてみても難しくてわからなかった。
たぶん、@admin.register()を使えば、管理者権限を持つユーザーしかログインできないか、
アプリケーションの項目が表示されないようになるっぽい。

カスタマイズ


あとがき

pythonとDjangoの勉強をはじめて、まだまだわかないことだらけです。
備忘録としてと理解を深めるために、メモを残していきます。
調べたことや学んだことを言葉にして説明することの難しさを実感しています。
また、用語の正しい使い方に全く自信がありません。コメントで優しく指摘していただけると嬉しいです
中途半端な状態になっているかもしれませんが、追々更新していく予定です。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?