未定义Django NameError [app name]

jon*_*atx 6 python django django-grappelli

尝试使用django-grappelli作为我的管理主题,安装具有惊人的挑战性.在我的urls.py中运行以下内容:

NameError .. name 'grappelli' is not defined
Run Code Online (Sandbox Code Playgroud)

该错误被抛出

(r'^grappelli/', include(grappelli.urls))
Run Code Online (Sandbox Code Playgroud)

用pip安装grappelli,grappelli在我的sites-packages目录中.添加到我的INSTALLED_APPS,运行syncdb,尝试将grappelli添加到我的pythonpath,但没有运气.如果我在urls.py中导入grappelli,则错误会更改为AttributeError - 'module' has no attribute 'urls'

建议或任何形式的帮助非常感谢.

Yuj*_*ita 19

行应该是:

(r'^grappelli/', include('grappelli.urls'))
Run Code Online (Sandbox Code Playgroud)

include要么获取urls模块的路径,要么它可以是返回url模式的python对象 http://docs.djangoproject.com/en/dev/topics/http/urls/#include

所以你的两个选项是上面的行(urls的路径)或

from grappelli.urls import urlpatterns as grappelli_urls

(r'^grappelli/', include(grappelli_urls)),
Run Code Online (Sandbox Code Playgroud)

至于错误,它是Python中调试中最直接的错误之一:grappelli未定义,如...尚未定义.

想象一下在shell中:

>>> print grappelli
exception: variable undefined
>>> grappelli = 'hello' # we just defined grappelli
>>> print grappelli
'hello'
Run Code Online (Sandbox Code Playgroud)


str*_*nar 11

我意识到这已经超过一年了,但当我遇到同样的问题时,这是谷歌的最佳成果之一.

您也可以更改include()语句,而不是从grapelli.urls导入urlpatterns

(r'^grappelli/', include(grappelli.urls))
Run Code Online (Sandbox Code Playgroud)

(r'^grappelli/', include('grappelli.urls'))
Run Code Online (Sandbox Code Playgroud)

这引起了我的注意,直到我注意到需要在include语句中引用package.urls.