【问题标题】:using HttpResponseRedirect使用 HttpResponseRedirect
【发布时间】:2013-12-30 23:37:00
【问题描述】:

在我的一个视图函数中,在某些情况下我想重定向到另一个 URL。 所以我在做

return HttpResponseRedirect(reverse(next_view, kwargs={'name': name1}))

现在我有了另一个视图函数,比如

def next_view(request, name):

我还在相关的 urls.py 文件中添加了以下行

from wherever import next_view

urlpatterns = patterns("",
                        url(r"^next_view/(?P<name>w+)/", next_view, name="next_view"),
                       ) 

这不行,我明白了

Reverse for 'next_view' with arguments '()' and keyword arguments '{'name': u'test'}' not found.

【问题讨论】:

  • 如果您使用子urls.py 文件,是否安装了应用程序?你试过reverse('next_view', ...)(引号)吗?

标签: python django


【解决方案1】:

我猜正则表达式匹配不正确。怎么样:

r"^next_view/(?P<name>\w+)/"

注意 'w' 之前的反斜杠。

【讨论】:

  • 非常感谢。我不知何故错过了那个反斜杠,并遭受了很长时间。
【解决方案2】:

对于urls.py,您希望在w+ 之前添加反斜杠,并在URL 末尾添加$ 符号,以便接受任何其他加入到此的URL:

urlpatterns = patterns("",
  url(r"^next_view/(?P<name>\w+)/$", next_view, name="next_view"),
  ) 

对于views.py,您想在视图名称周围添加括号:

def example_view(self):
  # view code 
  return HttpResponseRedirect(reverse('next_view', kwargs={'name': name1}))

【讨论】:

    猜你喜欢
    • 2012-01-22
    • 2011-08-14
    • 1970-01-01
    • 2015-02-10
    • 2010-10-28
    • 1970-01-01
    • 2011-11-26
    • 2018-07-30
    • 2014-05-31
    相关资源
    最近更新 更多