5

私はちょうどdjangoを学んでいます.djangoの最大の問題は、何かがうまくいかなかった場合、実際に何がうまくいかなかったのかについての情報なしで巨大なトレースバックを取得することです.

私は実際にこのチュートリアルのチュートリアルの手順に従っています。django のエラー メッセージを読んで理解する方法について説明はありますか?

例:

DoesNotExist at /admin/

Site matching query does not exist.

Request Method:     GET
Request URL:    http://localhost:8080/admin/
Django Version:     1.4.5
Exception Type:     DoesNotExist
Exception Value:    

Site matching query does not exist.

Exception Location:     /usr/lib/python2.7/dist-packages/django/db/models/query.py in get, line 366
Python Executable:  /usr/bin/python
Python Version:     2.7.3
Python Path:    

['/home/ps/src/python/django',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-linux2',
 '/usr/lib/python2.7/lib-tk',
 '/usr/lib/python2.7/lib-old',
 '/usr/lib/python2.7/lib-dynload',
 '/usr/local/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages/PIL',
 '/usr/lib/pymodules/python2.7/gtk-2.0',
 '/usr/lib/python2.7/dist-packages/gst-0.10',
 '/usr/lib/python2.7/dist-packages/gtk-2.0',
 '/usr/lib/pymodules/python2.7']

Server time:    So, 27 Okt 2013 19:32:52 +0100


Traceback:
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python2.7/dist-packages/django/contrib/admin/sites.py" in wrapper
  213.                 return self.admin_view(view, cacheable)(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapped_view
  91.                     response = view_func(request, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/django/views/decorators/cache.py" in _wrapped_view_func
  89.         response = view_func(request, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/django/contrib/admin/sites.py" in inner
  195.                 return self.login(request)
File "/usr/lib/python2.7/dist-packages/django/views/decorators/cache.py" in _wrapped_view_func
  89.         response = view_func(request, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/django/contrib/admin/sites.py" in login
  326.         return login(request, **defaults)
File "/usr/lib/python2.7/dist-packages/django/views/decorators/debug.py" in sensitive_post_parameters_wrapper
  69.             return view(request, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapped_view
  91.                     response = view_func(request, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/django/views/decorators/cache.py" in _wrapped_view_func
  89.         response = view_func(request, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/django/contrib/auth/views.py" in login
  53.     current_site = get_current_site(request)
File "/usr/lib/python2.7/dist-packages/django/contrib/sites/models.py" in get_current_site
  92.         current_site = Site.objects.get_current()
File "/usr/lib/python2.7/dist-packages/django/contrib/sites/models.py" in get_current
  25.             current_site = self.get(pk=sid)
File "/usr/lib/python2.7/dist-packages/django/db/models/manager.py" in get
  131.         return self.get_query_set().get(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/django/db/models/query.py" in get
  366.                     % self.model._meta.object_name)

Exception Type: DoesNotExist at /admin/
Exception Value: Site matching query does not exist.

こいつは何を言おうとしてるんだ?「/admin/」の「DoesNotExist」とは何ですか? 「DoesNotExists」に関する説明は、「オブジェクトが存在しない」ことだけを示しています。

管理インターフェイスは以前は間違いなく機能していましたが、モデルのアプリ内で遊んだだけですが、プロジェクトの settings.py から INSTALLED_APPS のアプリを削除した後でも、そのメッセージが表示されます。私のアプリ自体は機能しているようですが、管理インターフェイスは機能していません。

さて、私の問題をグーグルで調べた後、「django.contrib.sites」をコメントアウトする必要があることがわかりました。その後、すべてが正常に機能しました。しかし、これがdjangoのやり方だとは思いません。エラーが発生するたびに、Googleにアクセスし、紛らわしいメッセージを渡し、try-errorを介してどの回答が私の問題に一致するかを見つけます。

「djangoの奥深くにあるエラー17」だけでなく、django/pythonが何を伝えているのか、「本当に」問題が何であるかを本当に理解したいと思います。

このエラーメッセージを「読む」方法はありますか?

4

1 に答える 1

2

DEBUG を True に設定する必要があります。次に、トレースバックの各ポイントでコード コンテキストとローカル変数を含む、より詳細なエラー メッセージが表示されます。

あなたの場合、実行時に作成されたはずの Site テーブル (django.contrib.sites から) にエントリがありませんmanage.py syncdb

于 2013-10-27T19:08:45.920 に答える