假设我有一个将接受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中做这样的事吗?
答案 0 :(得分:2)
您可以使用HttpResponseRedirect类重定向到您喜欢的任何网址。由于它是重定向,因此请求将是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)
答案 1 :(得分:0)
用户代理(浏览器)决定是通过POST还是GET重定向。如果重定向,大多数浏览器将从POST切换到GET。我知道你可以重定向并保持POST的唯一方法是你明确地这样做,比如使用curl -X POST。