我有一个发送POST请求并返回页面的表单。此页面的网址定义如下
(r'^result/', 'main.views.eval_form'),
并且在浏览器中,网址看起来像
mysite.com/main/result
但我也使用了获取请求的URL,因此用户可以保存网址而不必使用表单,即:
mysite.com/main/result?name=Tom&color=blue&etc=etc
现在有没有办法在用户使用表单后更改浏览器中的url,默认包含查询字符串?这样用户可以复制网址并始终返回结果?
谢谢!
答案 0 :(得分:1)
更改method
代码的<form>
属性:
<form action="/main/result/" method="GET">
...
</form>
答案 1 :(得分:1)
您可以使用Post视图中的预填充查询字符串对网址执行HttpResponseRedirect
。
确保您没有提交两次或创建无限循环。
return HttpResponseRedirect("/result?name={}&color={}&etc={}".format(name, color, etc))
另一种方法是使用模板中的jQuery或Javascript填充查询字符串。
我自己会接受catavaran的方法
答案 2 :(得分:0)
如果你想实现这个目标,你应该改变你的观点来处理post和get请求。
代码可能是这样的:
def result(request):
name = request.REQUEST.get("name")
但是自django 1.7
以来,不推荐使用request.REQUESTdef result(request):
if request.method == "GET":
name = request.GET.get("name")
if request.method == "POST":
name = request.POST.get("name")