为什么每次启用admin.autodiscover()时Django都会抛出异常?

时间:2009-12-21 17:37:28

标签: python django django-models dreamhost

这是我的设置。我在Dreamhost,Python 2.4上使用Django版本1.1.1。我遇到的问题是每当我创建一个简单的应用程序并启用admin.autodiscover()时,Django将抛出异常。我的设置:

from django.conf.urls.defaults import *
from testapp.views import HelloWorld

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    (r'^HelloWorld/$', HelloWorld),

    # 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/', include(admin.site.urls)),
)

我的settings.py看起来像:

INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
'django.contrib.admindocs',
'testapp',
)

我的testapp.views看起来像:

from django.http import HttpResponse

def HelloWorld(request):
    return HttpResponse("Hello world")

如果我注释掉admin.autodiscover(),我可以看到我对HelloWorld的看法。如果我启用admin.autodiscover(),Django会抛出一个我无法捕获的异常。

有谁知道为什么会发生这种情况以及我可以做些什么来解决它?

3 个答案:

答案 0 :(得分:4)

当我重命名某个应用时,我遇到了类似的问题。基本上,如果您已在admin.autodiscover()文件中使用urls.py启动了应用并使用了管理员,则会导致在您的应用文件夹中创建admin.pyc文件。删除此admin.pyc文件并再次运行服务器......瞧!

答案 1 :(得分:1)

我猜测testapp / admin.py不会导入你正在创建admin的models.Model类。请尝试以下方法:

./manage.py shell # you may immediately get a stack trace
>> import testapp.admin # I'll bet it blows up.

答案 2 :(得分:0)

老问题,但仍然相关。我有一个类似的问题,今天难倒我。问题是我在Django应用程序文件夹(lib/cache)的目录中重构了一组文件到一个文件(lib/cache.py)。由于__init__.py目录中仍有cache,因此Python将空目录视为模块并阻止访问cache.py

在我的admin.autodiscover()中评论urls.py使得跟踪它变得容易一些,但仍然需要一些猜测。