情况简而言之。由于某种原因,reverse()方法不起作用。
在PROJECT中urls.py
url(r'^enrollment/', include('project.enrollment.urls')),
APP中的urls.py
url(r'^thanks/$', 'enrollment.views.thanks', name='enroll_thanks'),
和views.py
from django.core.urlresolvers import reverse
def thanks(request):
return render_to_response('enrollment/thanks.html', {}, context_instance=RequestContext(request))
def enroll(request):
''' some code for handling the form'''
return HttpResponseRedirect(reverse('enrollment.views.thanks'))
此反向导致以下错误: 无法导入project.views。错误是:没有名为views的模块
在_get_callback,第167行的文件../django/core/urlresolvers.py中
知道为什么这不起作用?下一步是使用参数调用thanks-view,但在此设置工作后应该很容易。是否应该在views.py中导入更多内容?
答案 0 :(得分:4)
来自reverse的文档:“作为计算哪些URL名称映射到哪些模式的一部分,reverse()函数必须导入所有URLconf文件并检查每个视图的名称。这涉及导入每个视图函数。如果在导入任何视图函数时出现任何错误,则会导致reverse()引发错误,即使该视图函数不是您要反转的函数。
您的任何网址是否引用project.views.
...?
答案 1 :(得分:-1)
不太确定您的模块布局,但根据urls.py中的include()行,您可能希望添加“项目”。也可以在reverse()调用中使用参数。
reverse('project.enrollment.views.thanks')
或者您可能在视图中有错误。