在我的观点的一个定义中,我正在做这个
return HttpResponseRedirect(reverse('home'),{"fail":"true"})
然后视图中的目标接收定义执行此操作
def Validate(request):
rslt = request.GET.get("fail", "False") #--->fail is always false
....
....
在上面,变量fail始终是false
。关于为什么我总是弄错的任何建议。为什么我的新参数没有被传递?
答案 0 :(得分:1)
传递给args
构造函数的kwargs
和HttpResponseRedirect
def __init__(self, redirect_to, *args, **kwargs):
...
未用于构建QueryDict
(获取或发布)。您在此处初始化响应,而不是请求。正如doniyor已经声明的那样,你基本上必须手动将查询字符串附加到reverse()
返回的路径:
return HttpResponseRedirect('{to}?{query}'.format(
to=reverse('home'),
query=urllib.urlencode({"fail":"true"})
))
这与django无关,而是一般的http重定向。您只能将请求重定向到某个位置(您可以向其添加查询字符串),但您无法篡改请求本身,例如添加POST数据或设置标题。
答案 1 :(得分:0)
它是因为你要求来自fail
的{{1}},但你没有在GET中传递任何东西。
你需要:
GET
然后你可以像:
return HttpResponseRedirect('%s?fail=%s' % (reverse('home'), True))
不要滥用布尔人! ;)
答案 2 :(得分:0)
你需要在反向函数中给出第二个参数...作为de arguments ...这对我很有用!!!
return reverse('home', args='true')