Django NameError [应用名] 未定义
我在使用django-grappelli这个主题来美化我的管理后台时,安装过程出乎意料地困难。在我的urls.py文件中遇到了以下问题:
NameError .. name 'grappelli' is not defined
错误出现在这一行:
(r'^grappelli/', include(grappelli.urls))
我通过pip安装了grappelli,并且它确实在我的site-packages目录里。我把它添加到了我的INSTALLED_APPS
中,运行了syncdb,还尝试把grappelli添加到我的pythonpath里,但都没有成功。如果我在urls.py中导入grappelli,错误就变成了AttributeError - 'module' has no attribute 'urls'
。
如果有人能提供建议或任何帮助,我将非常感激。
4 个回答
2
你可能需要在 urls.py 文件中导入以下内容:
from django.conf.urls import include
11
我知道这个问题已经有一年多了,但当我遇到同样的问题时,它是谷歌搜索的前几条结果之一。
与其从 grapelli.urls 导入 urlpatterns,不如直接修改 include() 语句
(r'^grappelli/', include(grappelli.urls))
改成
(r'^grappelli/', include('grappelli.urls'))
这让我有点困惑,直到我注意到在 include 语句中需要用引号包裹 package.urls。
21
这一行应该是:
(r'^grappelli/', include('grappelli.urls'))
include
可以用来指定一个网址模块的路径,或者它也可以是一个返回网址模式的 Python 对象。你可以查看这个链接了解更多信息:http://docs.djangoproject.com/en/dev/topics/http/urls/#include
所以你有两个选择,要么使用上面那一行(网址的路径),要么:
from grappelli.urls import urlpatterns as grappelli_urls
(r'^grappelli/', include(grappelli_urls)),
关于这个错误,它是 Python 中最简单的错误之一,容易调试:grappelli
没有被定义,也就是说……它还没有被定义。
想象一下你在命令行界面:
>>> print grappelli
exception: variable undefined
>>> grappelli = 'hello' # we just defined grappelli
>>> print grappelli
'hello'