我有一个小的python / django网站,我正在使用html表单发布一些信息,但是烦人的是这些信息存储在POST中,所以当用户刷新时说IE / chrome会得到关于页面的警告消息包含POST数据。如何在处理后清除POST数据,以便用户可以刷新而不会看到此警告消息?
我还有一些检测POST的逻辑如下
if request.method == "POST":
do something
全选 在新窗口中打开
当我实际发布表单时,这很好,但是当我刷新页面时,它还会检测POST并执行我现在不想做的逻辑。 我怎么能解决这个问题?
由于
答案 0 :(得分:0)
表单验证后有效。然后重定向到其他页面,例如成功页面或重定向到同一视图。重定向将避免Double Form Submition problem
。阅读更多相关信息here。
答案 1 :(得分:0)
返回POST请求的响应时使用HttpResponseRedirect
。这在tutorial 4中解释为
在递增选择计数后,代码返回HttpResponseRedirect而不是正常的HttpResponse。 HttpResponseRedirect只接受一个参数:用户将被重定向到的URL(在这种情况下,请参阅以下关于我们如何构造URL的内容)。
正如上面的Python评论指出的那样,在成功处理POST数据之后,你应该总是返回一个HttpResponseRedirect。这个提示不是Django特有的;它只是很好的Web开发实践。
答案 2 :(得分:0)
正如Rohan所说,你应该使用HttpResponseRedirect
。但您也可以使用快捷方式:
from django.shortcuts import redirect
def some_view(request):
if request.method == 'POST':
# do smth
return redirect('/page-with-form/')