【问题标题】:Django HttpResponseRedirect and reverse()Django HttpResponseRedirect 和 reverse()
【发布时间】:2012-02-10 17:51:02
【问题描述】:

简而言之。由于某种原因 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。错误是:没有名为视图的模块

在文件 ../django/core/urlresolvers.py 的 _get_callback 中,第 167 行

知道为什么这不起作用吗?下一步是使用参数调用Thanks-view,但在此设置工作后应该很容易。在views.py中是否应该有更多的东西要导入?

【问题讨论】:

    标签: django django-views reverse


    【解决方案1】:

    来自reverse 的文档:“作为确定哪些 URL 名称映射到哪些模式的一部分,reverse() 函数必须导入所有 URLconf 文件并检查每个视图的名称。这涉及导入每个“

    您的任何网址是否引用了project.views....?

    【讨论】:

    • 对我自己的代码来说太盲目了。我有不存在的 project.views 的 url。之前没有影响,但是 reverse() 不喜欢它。就像文档说的那样。
    【解决方案2】:

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

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

    否则你可能在视图中有错误。

    【讨论】:

      猜你喜欢
      • 2017-11-25
      • 2014-02-02
      • 2020-06-27
      • 1970-01-01
      • 1970-01-01
      • 2018-11-15
      • 1970-01-01
      • 2015-07-03
      • 2011-08-14
      相关资源
      最近更新 更多