[英]Django GET request params from POST request
我有一個表單,您需要使用POST請求填寫,但我希望結果是重定向到我網站上的各個頁面。 有時我希望將用戶重定向到個人資料頁面,有時又重定向到購買頁面。
因此,我將重定向URI放在POST表單頁的URL的GET參數中:/ form /?redirect_uri = / payments /
使用適當的redirect_uri,網址在登陸表單頁面時是正確的。 但是,當我填寫表單和POST時,Django似乎並不認為GET請求中有任何參數。
如何在POST請求中從URL獲取這些參數?
編輯:
def form_view(request):
if request.method == "POST":
# Do stuff with form validation here
redirect_uri = "/home/"
if "redirect_uri" in request.GET:
redirect_uri = request.GET['redirect_uri']
if redirect_uri == request.path:
# avoid loops
redirect_uri = "/home/"
return redirect(redirect_uri)
通過訪問以下網址來加載此表單頁面:
/form/?redirect_uri=/payments/
形成:
<form action="/form/" method="POST" class="wizard-form" enctype="application/x-www-form-urlencoded" autocomplete="off">
{% csrf_token %}
<fieldset class="form-group">
<label for="email">Email address</label>
<input name="email" type="text" class="form-control" id="email" placeholder="Enter email or username" required>
</fieldset>
<button type="submit" class="btn btn-primary">Go</button>
</form>
在POST請求中(即,當您提交表單時),URL將是您在表單的'action'
屬性中指定的網址。 如果所需的參數不存在,則視圖將無法獲取它們。
因此,要么更新表單的action
屬性以具有這些參數,要么可以在表單本身中添加thin(作為隱藏的輸入)。
在GET請求中,您將從瀏覽器中看到的URL中獲取屬性。
您的表格必須進行如下修改:
<form action="/form/?redirect_uri={{ request.GET.redirect_url}}"
method="POST" class="wizard-form"
enctype="application/x-www-form-urlencoded" autocomplete="off">
請允許我也建議您對視圖進行一點優化
def form_view(request):
if request.method == "POST":
# Do stuff with form validation here
redirect_uri = request.GET.get('redirect_uri',"/home/")
if "redirect_uri" == request.path:
# avoid loops
redirect_uri = "/home/"
return redirect(redirect_uri)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.