[英]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.