我有一个表单需要使用POST请求填写,但我希望结果是重定向到我网站上的各个页面。有时我希望将用户重定向到个人资料页面,有时还会重定向到购买页面。
所以我将重定向URI放在POST的表单页面的URL的GET参数中: /形式/?REDIRECT_URI = /付款/
使用相应的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>
答案 0 :(得分:1)
在POST请求中 - 即当您提交表单时 - 该网址将是您在表单中的'action'
属性中指定的内容。如果您需要的参数不存在,您的视图将无法获取它们。
因此,要么更新表单的action
属性以获取这些参数,要么您可以在表单中添加thin(作为隐藏的输入)。
在GET请求中,您将从浏览器中看到的url获取属性。
答案 1 :(得分:1)
您的表单必须修改如下:
<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)