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