查看文档似乎重定向是创建内部反向的HTTP请求的快捷方式。我有以下工作代码:
return HttpResponseRedirect(reverse('post-detail', args=(self.kwargs['pk'],)))
我希望同样的事情可以作为重定向,参数传递给反向:
return redirect('post-detail', args=(self.kwargs['pk'],))
虽然在使用重定向时,我得到了与URL不匹配的异常。我错过了什么?
url(r'^post/(?P<pk>[\d]+)/$', views.PostDetailView.as_view(), name="post-detail"),
使用重定向时出错:
反向&#39;详细信息&#39;参数&#39;()&#39;和关键字参数 &#39; {&#39; args&#39;:(u&#39; 5905064635924480&#39;,)}&#39;未找到。尝试过1种模式: [&#39;交/(ΔP[\ d] +)/ $&#39;]
答案 0 :(得分:1)
redirect
的签名与reverse
不同,正如您从错误中看到的那样,这表明它使用的是*args, **kwargs
,而不是使用名为args
的关键字参数kwargs
(另见文档:https://docs.djangoproject.com/en/1.8/topics/http/shortcuts/#redirect)
所以你想要:
return redirect('post-detail', self.kwargs['pk'])
或
return redirect('post-detail', pk=self.kwargs['pk'])