簡體   English   中英

帶有未傳遞參數的HttpResponseRedirect

[英]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 關於為什么我總是虛假的任何建議。 為什么我的新參數沒有通過?

argskwargs傳遞給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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM