[英]HttpResponseRedirect with reverse not passing parameters
在我的观点的一种定义中,我正在这样做
return HttpResponseRedirect(reverse('home'),{"fail":"true"})
然后目标接收定义在视图中执行此操作
def Validate(request):
rslt = request.GET.get("fail", "False") #--->fail is always false
....
....
在上面的变量中,fail总是false
。 关于为什么我总是虚假的任何建议。 为什么我的新参数没有通过?
args
和kwargs
传递给HttpResponseRedirect
构造函数
def __init__(self, redirect_to, *args, **kwargs):
...
不用于构造QueryDict
(获取或发布)。 您正在此处初始化响应,而不是请求。 正如doniyor已经指出的那样,您基本上必须手动将querystring附加到reverse()
返回的路径上:
return HttpResponseRedirect('{to}?{query}'.format(
to=reverse('home'),
query=urllib.urlencode({"fail":"true"})
))
这与django无关,只是一般的http重定向。 您只能将请求重定向到某个位置(可以在其中添加查询字符串),但不能篡改该请求本身,例如添加POST数据或设置标头。
这是因为您要从GET
请求fail
,但没有在GET中传递任何内容。
你需要:
return HttpResponseRedirect('%s?fail=%s' % (reverse('home'), True))
那么您可以像这样捕获它:
request.GET.get("fail", False)
不要误用布尔值! ;)
您需要在反向函数中给第二个参数...作为de arguments ...这对我来说很好!!!
return reverse('home', args='true')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.