LoginSignup
6
5

More than 5 years have passed since last update.

DJangoメモ:はじめから(管理画面を使う編)  myハマりポイント

Last updated at Posted at 2013-12-09

今回からチュートリアル2に突入
http://www.djangoproject.jp/doc/ja/1.0/intro/tutorial02.html#intro-tutorial02

ちなみにもうハマってはいませんが、あえて当時の内容のままで残しておきます。

ちなみに自分の環境ではpythonが2.7.5、DJangoは1.6です。

adminページを使用する

まずはsettings.pyを確認

settings.py
# この部分
INSTALLED_APPS = (
     'django.contrib.admin',   # これが必要。自分の場合デフォルトで入っていたが
     'django.contrib.auth',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.messages',
     'django.contrib.staticfiles',
     'django.contrib.sites',
     'polls'
 )

追加した場合は再度

python manage.py syncdb

を実行。アプリケーションを追加したらデータベースも追加するのがセオリーっぽい。
次にurls.pyを編集。ここでちょっと困ったことになった。

urls.py

チュートリアルでは

from django.conf.urls.defaults import *

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Example:
    # (r'^mysite/', include('mysite.foo.urls')),

    # Uncomment the admin/doc line below and add 'django.contrib.admindocs'
    # to INSTALLED_APPS to enable admin documentation:
    # (r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    (r'^admin/(.*)', admin.site.root),
)

という風に記述しているのでとりあえずその通りにして、

python manage.py runserver

この後 http://127.0.0.1:8000/admin/ に行けばログイン画面が表示されるはずだった。
しかし、結果はエラー。メッセージは

ImportError at /admin/

No module named defaults

バージョンの違いのせいかもしれないと思い(チュートリアルは1.0を想定しているが自分は1.6なので)、編集前の状態に戻してみる。実は編集する前から以下のようなそれらしい記述があった。

from django.conf.urls import patterns, include, url   # デフォルトで入っていたimport文

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'myDj.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    url(r'^admin/', include(admin.site.urls)),   # どの例も()の前にurlが付いている
)

やっていることは同じに見えるのでおそらく書き方が変わったのだろうと考え、起動してアクセス。
が、またしても駄目。ただしエラーメッセージはさっきと違う。

ImproperlyConfigured at /admin/

You're using the Django "sites framework" without having set the SITE_ID setting. Create a site in your database and set the SITE_ID setting to fix this error.

よく分からない。
「サイトIDを設定しろ」と言われているのは何となく理解できるものの、それって一体どうやるの?
エラーメッセージでググっても今ひとつピンと来ないし

苦肉の策で今度は間を取った書き方をしてみた。

from django.conf.urls import patterns, include, url   # ここは失敗しないほうを採用 

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # デフォルトの記法 url(r'^admin/', include(admin.site.urls))
    # チュートリアルの記法 (r'^admin/(.*)', admin.site.root)
    url(r'^admin/(.*)', include(admin.site.root))

すると、

AttributeError at /admin/

'AdminSite' object has no attribute 'root'

以上が当時の内容です。

現在はコメントのおかげで解決しました(投稿してよかった)。

6
5
6

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
6
5