Django Adminは、 Django WebフレームワークのCRUDインタフェースです。ほとんどの場合、自動的に生成されますが、広くカスタマイズすることができます。ただし、 信頼できるユーザー向けに設計されており、制限があることに注意する必要があります。いずれにしても、 信頼できないユーザーには管理者権限を与えることは絶対にしてはいけません 。
Django Adminは高度なカスタマイズを提供しますが、あまりにも多くのカスタマイズの細部を落とさないように注意してください。もしそうなら、おそらくDjango Adminを使わずに独自のカスタムインターフェースを作成する時が来ます。
バージョン | 発売日 |
---|---|
1.10 | 2106-08-01 |
1.9 | 2015-12-01 |
1.8 | 2015-04-01 |
1.7 | 2014-09-02 |
1.6 | 2013-11-06 |
1.5 | 2013-02-26 |
1.4 | 2012-03-23 |
1.3 | 2011-03-23 |
1.2 | 2010-05-17 |
1.1 | 2009年7月29日 |
1.0 | 2008-09-03 |
Django adminを使い始めるために必要なものはすべて、Djangoのデフォルトのプロジェクトレイアウトで既に設定されています。これも:
# settings.py
# `django.contrib.admin` and its dependancies.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
...,
]
MIDDLEWARE = [
...
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
...
]
TEMPLATES = [
{
...,
'OPTIONS': {
'context_processors': [
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
...
],
},
},
]
Django> = 1.9で若干異なるurls.py
については、古いバージョンよりも注意が必要です。
from django.conf.urls import url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
]
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
]
include
付きのバージョンはDjango 1.9でも動作しinclude
が、将来廃止され、今後削除される予定です。
まだ実行されていない場合は、基本移行を適用する必要があります。
$ python manage.py migrate
管理者にアクセスするには、スーパーユーザーを作成する必要があります。
$ python manage.py createsuperuser
これが完了したら、サーバーを実行できます:
$ python manage.py runserver
管理ページ( http://127.0.0.1:8000/admin/)にアクセスしてください。
アプリで独自のモデルを作成した場合でも、管理ページで利用できるようにするには、 登録する必要があります。
これはadmin
サブモジュールで行われます。あなたのアプリがmanage.py startapp
を使って作成された場合、 admin.py
ファイルは既にあなたのappモジュールに置かれているはずです。それ以外の場合は作成します。
#myapp/admin.py
from django.contrib import admin
from myproject.myapp.models import MyModel
admin.site.register(MyModel)
すべてのオプションは、ModelAdminサブクラスで定義されています。いくつかのオプション:
class MyCustomAdmin(admin.ModelAdmin):
list_display = ('name','age','email') # fields to display in the listing
empty_value_display = '-empty-' # display value when empty
list_filter = ('name', 'company') # enable results filtering
list_per_page = 25 # number of items per page
ordering = ['-pub_date', 'name'] # Default results ordering
# and register it
admin.site.register(MyModel, MyCustomAdmin)
モデルを登録するより簡潔な方法は、 admin.register
デコレータを使用することadmin.register
。
@admin.register(MyModel)
class MyCustomAdmin(admin.ModelAdmin)
...
from django.contrib.auth.models import User
class UserAdmin(admin.ModelAdmin):
list_display = ('email', 'first_name', 'last_name')
list_filter = ('is_staff', 'is_superuser')
admin.site.unregister(User)
admin.site.register(User, UserAdmin)
django User Model Adminが既に登録されているので、カスタムUserAdminを登録する前に登録を解除する必要があります。まずadmin.pyでUser Modelの登録を解除してから、User ModelをカスタムModelAdminに登録する必要があります
Django Adminにはデフォルトでいくつかのモデルが登録されています。管理ページからモデルを削除したい場合があります。
これはadmin
サブモジュールで行われます。あなたのアプリがmanage.py startapp
を使って作成されたものであれば、 admin.py
ファイルは既にあなたのアプリケーションモジュールに置かれているはずです。それ以外の場合は作成します。
#myapp/admin.py
from django.contrib import admin
from django.contrib.auth.models import User
admin.site.unregister(User)