2012-02-10 77 views
3

简而言之情况。出于某种原因,reverse()方法不起作用。Django HttpResponseRedirect和reverse()

在项目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。错误是:无模块命名视图

在_get_callback文件../django/core/urlresolvers.py,线路167

知道为什么这不起作用?下一步是用参数调用thank-view,但是在安装完成后应该很容易。应该在views.py中导入更多内容吗? “

回答

4

来自reverse的文档:”作为确定哪些URL映射到哪些模式的一部分,reverse()函数必须导入所有的URLconf文件并检查每个视图的名称,包括导入每个视图函数,如果在导入任何视图函数时有任何错误,那么即使该视图函数不是您想要反转的函数,也会导致reverse()引发错误。“

您的任何网址是否提及project.views. ...?

+0

太盲目了我自己的代码。我曾经在project.views的网址上找不到。它并没有影响较早,但reverse()不喜欢它。就像文件说的那样。 – rice 2012-02-10 18:48:01

-1

不太确定您的模块布局,但基于urls.py中的include()行,它看起来像您可能想要添加“项目”。在你的reverse()调用中的参数也是如此。

reverse('project.enrollment.views.thanks') 

这或者你可能在视图中有一个错误。

相关问题