在Django中将查询字符串添加到url

时间:2015-03-26 04:23:12

标签: django

我有一个发送POST请求并返回页面的表单。此页面的网址定义如下

(r'^result/', 'main.views.eval_form'),

并且在浏览器中,网址看起来像

mysite.com/main/result

但我也使用了获取请求的URL,因此用户可以保存网址而不必使用表单,即:

mysite.com/main/result?name=Tom&color=blue&etc=etc

现在有没有办法在用户使用表单后更改浏览器中的url,默认包含查询字符串?这样用户可以复制网址并始终返回结果?

谢谢!

3 个答案:

答案 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.REQUEST
def result(request):
    if request.method == "GET":
        name = request.GET.get("name")
    if request.method == "POST":
        name = request.POST.get("name")