使用HttpResponseRedirect

时间:2013-12-30 23:37:00

标签: python django

在我的一个视图功能中,在某些条件下我想重定向到另一个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.

2 个答案:

答案 0 :(得分:1)

我猜这个正则表达式没有正确匹配。怎么样:

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

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

答案 1 :(得分:1)

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

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}))