2

假设我有一个将接受 POST 请求的视图。验证检查通过后,我需要使用 GET 方法将请求重定向到另一个 HTML/视图:

def view1(request):
    if request.POST:
       form = TempForm(request.POST)
       if form.is_valid():
           return redirect(request, 'view2')

def view2(request):
    if request.POST:
       #POST stuff here
    else:
       #GET stuff here

我的问题是,在 之后form.is_valid(),重定向请求将作为 POST 方法传递。我的最终目标是使用 GET 方法重定向 view2。

我可以在 Django 中做这样的事情吗?

4

2 回答 2

3

您可以使用HttpResponseRedirect类重定向到您喜欢的任何 URL。由于它是重定向,因此请求将是 GET 请求(使用 http 重定向无法进行 POST - 这是 http 协议的限制)。

如果您需要添加 GET 参数,您可以简单地自己创建 GET 字符串 -

get_string = "?"
get_strint += "my_param=" + my_variable + "&"
get_string += "my_other_param=" + my_other_variable
return HttpResponseRedirect('/my_url/' + get_string)
于 2013-02-11T12:21:07.003 回答
0

用户代理(浏览器)决定是否使用 POST 或 GET 进行重定向。如果被重定向,大多数浏览器将从 POST 切换到 GET。我知道你可以被重定向并留在 POST 中的唯一方法是如果你明确地这样做,例如使用 curl -X POST。

http://en.wikipedia.org/wiki/Post/Redirect/Get

于 2013-11-14T23:50:33.723 回答