这是我的设置。我在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会抛出一个我无法捕获的异常。
有谁知道为什么会发生这种情况以及我可以做些什么来解决它?
答案 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
使得跟踪它变得容易一些,但仍然需要一些猜测。