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