视图中的 Django 导入错误 - 没有名为“x”的模块
Posted
技术标签:
【中文标题】视图中的 Django 导入错误 - 没有名为“x”的模块【英文标题】:Django import error in views - no module named 'x' 【发布时间】:2013-09-26 02:23:47 【问题描述】:我不断收到没有这样的模块的错误消息。
项目名称是 gmblnew,我有两个子文件夹 - core
和 gmblnew
- 我正在开发的应用程序是核心。
我的 urls.py 文件是
from django.conf.urls import *
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'gmblnew.views.home', name='home'),
# url(r'^gmblnew/', include('gmblnew.foo.urls')),
url(r'^league/', include('core.views.league')),
# Uncomment the admin/doc line below to enable admin documentation:
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
url(r'^admin/', include(admin.site.urls)),
)
这似乎很好。 views.py 文件是:
from django.http import HttpResponse
def league(request):
from core.models import Division
response = HttpResponse()
response['mimetype'] = 'text/plain'
response.write("<html><>BODY>\n")
response.write("< TABLE BORDER=1><CAPTION>League List</CAPTION><TR>\n")
all_leagues = Division.objects.all()
for league in all_leagues:
response.write("<TR>\n")
response.write("<TD> %s" % league)
response.write("</TD>\n")
response.write("</BODY></HTML>")
return response
追溯:
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
103. resolver_match = resolver.resolve(request.path_info)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/urlresolvers.py" in resolve
319. for pattern in self.url_patterns:
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/urlresolvers.py" in url_patterns
347. patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/urlresolvers.py" in urlconf_module
342. self._urlconf_module = import_module(self.urlconf_name)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/utils/importlib.py" in import_module
35. __import__(name)
File "/Users/chris/Dropbox/Django/gmblnew/gmblnew/urls.py" in <module>
12. url(r'^league/', include('core.views.league')),
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/conf/urls/__init__.py" in include
25. urlconf_module = import_module(urlconf_module)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/utils/importlib.py" in import_module
35. __import__(name)
Exception Type: ImportError at /admin/
Exception Value: No module named league
我在url(r'^league/', include('core.views.league')),
行上尝试了许多变体,包括gmblnew.core.views.league
、views.league
、views.view_league
等。我显然在该行的结构上遗漏了一些超级简单的东西。
【问题讨论】:
你看完教程了吗?您的视图方法需要修复。 这就是问题的重点。是的,我做到了,我正在调整它以适应我正在做的事情。 【参考方案1】:你的问题在这里:
url(r'^league/', include('core.views.league')),
通过使用include
,您指定了一个不存在的模块。
include
is used to include other url confs,而不是目标视图方法
你要的参考查看方法league
url(r'^league/$', 'core.views.league'),
应该可以。
另外,请注意 ^league/
之后的 $
,它代表 URL 模式的 end。
【讨论】:
总台。那行得通。从字面上看,花了大约 90 分钟试图解决这个问题。很简单。 :( 顺便说一句,输出测试 HTML 是乱码,但我也对其进行了排序。Aaaarrrrgh。谢谢。 我明白了。花几个小时在琐碎的事情上对我来说并不新鲜......很高兴它有帮助:)【参考方案2】:include
获取 url 文件的路径,而不是视图。直接写这个吧:
url(r'^league/', 'core.views.league'),
【讨论】:
以上是关于视图中的 Django 导入错误 - 没有名为“x”的模块的主要内容,如果未能解决你的问题,请参考以下文章
Django 导入错误 - 没有名为 django.conf.urls.defaults 的模块
django 导入错误 - 没有名为 core.management 的模块
升级到 Django 1.7。导入错误:没有名为仪表板的模块