Django の管理サイトを使えるようにする

次は Writing your first Django app, part 2 に進む。

Activate the admin site
まずは settings.py の INSTALLED_APPS で admin のコメントを外す。

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

次に manage.py syncdb する。

(venv)[paraches@praches.com myHeroku]$ python manage.py syncdb

fitsync/urls.py の admin の部分を Uncomment する。
こんな感じになる。

(venv)[paraches@praches.com myHeroku]$ cat fitsync/urls.py
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'^$', 'fitsync.views.home', name='home'),
    # url(r'^fitsync/', include('fitsync.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)),
)
(venv)[paraches@praches.com myHeroku]$ 

Django を起動して http://localhost:5000/admin/ にアクセスして確認。

(venv)[paraches@praches.com myHeroku]$ foreman start
00:24:44 web.1  | started with pid 26337
00:24:44 web.1  | 2013-05-06 00:24:44 [26337] [INFO] Starting gunicorn 0.17.4
00:24:44 web.1  | 2013-05-06 00:24:44 [26337] [INFO] Listening at: http://0.0.0.0:5000 (26337)
00:24:44 web.1  | 2013-05-06 00:24:44 [26337] [INFO] Using worker: sync
00:24:44 web.1  | 2013-05-06 00:24:44 [26344] [INFO] Booting worker with pid: 26344


管理者ページは表示されたけど css へのパスが通ってない…。


とりあえず css は置いておいて、次は commit して push してみる。
ここの最後の方に変更の反映方法が書いてあった。

(venv)[paraches@praches.com myHeroku]$ git add .
(venv)[paraches@praches.com myHeroku]$ git commit -m "Add polls application"
(venv)[paraches@praches.com myHeroku]$ git push heroku master

push は問題なく終了。


で、MacSafari から Herokuのサーバにアクセスしてみると、ちゃんと Django 管理サイトのログイン画面が表示された!(けど、もちろん css は読み込めてない…)
サーバの Django 管理サイトへのログインだけど、これは heroku run python manage.py syncdb した時に設定したユーザ名とパスワードを使用する。(上の例では U7623 がユーザ名。)
これもちゃんと Heroku サーバ上でログインできた!


次に管理画面から polls のデータにアクセスしてみたのだけど…エラーになる。

DatabaseError at /admin/polls/poll/add/
relation "polls_poll" does not exist
LINE 1: INSERT INTO "polls_poll" ("question", "pub_date") VALUES ('H...
                    ^
…
Exception Type:	DatabaseError
Exception Value:	
relation "polls_poll" does not exist
…


ただし、これは Heroku 上ではまだ syncdb してなかったというチョンボ
というわけで、heroku run してみた。

(venv)[paraches@praches.com myHeroku]$ heroku run python manage.py syncdb

問題なくできたので、再度トライしたらちゃんと polls のデータにアクセスできました。