Apache上のDjangoでadmin画面を表示する
Djangoの管理画面を表示するのに詰まったところがあったのでメモ。
アプリの作成、DBの設定は
はじめての Django アプリ作成、その 1 — Django 1.4 documentation
はじめての Django アプリ作成、その 2 — Django 1.4 documentation
を参考にした。
最速チュートリアルを書くと、
- settings.pyでDBの設定
- アプリケーションの作成
- models.pyを編集
これで、DBのひな形を作れる。
管理画面は
- settings.pyでadminを有効に
- urls.pyでadminのコメントアウトを外す
- /admin/へアクセス
でブラウザに表示される。
ここまでの流れを下で、もうちょっと詳しく。
settings.pyでDBの設定
チュートリアルと同じく、sqlite3を使う。
test_proj/settings.pyを開いて、DATABASESを編集する。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': '/home/ec2-user/test_proj/test.db',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
変更するところは、ENGINEとNAMEだけで、sqlite3のファイルをフルパス指定することに気をつける。
DB設定を変更したら、以下のコマンドを実行。
$ python manage.py syncdb
アプリケーションの作成
チュートリアルに従って、pollsというアプリケーションを作成する。
python manage.py startapp polls
作成されたpollsディレクトリ内のmodels.pyを編集して、モデルの設定をする。
models.pyを編集
polls/models.pyを以下のように編集。
from django.db import models class Poll(models.Model): question = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') class Choice(models.Model): poll = models.ForeignKey(Poll) choice = models.CharField(max_length=200) votes = models.IntegerField()
モデルを有効にするために、settings.pyのINSTALLED_APPSを編集。
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
# 'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'polls',
)
以下のコマンドで、モデルを有効にする。
$ python manage.py sql polls
djangoのshellについては省略。
ここまでで、DBの設定は完了なので、管理画面を表示できるようにする。
settings.pyでadminを有効に
settings.pyをもう一度編集。INSTALLED_APPSにdjango.contrib.adminを追加する。
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin', # 追加
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'polls',
)
追加したら、python manage.py syncdbを実行。
urls.pyでadminのコメントアウトを外す
次に、urls.pyでadminに関する設定がコメントアウトされているので、3行を外す。
from django.conf.urls import patterns, include, url # Uncomment the next two lines to enable the admin: from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', # Examples: # url(r'^$', '{{ project_name }}.views.home', name='home'), # url(r'^{{ project_name }}/', include('{{ project_name }}.foo.urls')), # Uncomment the admin/doc line below to enable admin documentation: # url(r'^admin/doc/', include('django.contrib.admindocs.urls')), # Uncomment the next line to enable the admin: url(r'^admin/', include(admin.site.urls)), )