0

在我使用 GET 方法提交表单然后刷新页面后,数据被重新提交,我正在使用 javascript 进行表单验证

我的观点是:

def show(request,post_id):
    try:
        p = post.objects.get(pk=post_id)
        c = comment.objects.filter(blog_id=p)
        if 'cbox' in request.GET:
            c = comment(text=request.GET['cbox'],name=request.GET['cname'],blog=p)
            c.save()
        c_list = comment.objects.filter(blog_id=p)   
    except  post.DoesNotExist:
        raise Http404
    return render_to_response('show.html',{'post':p,'c_list':c_list})

我的表格是:

<form  name="comment" action="" method="get" onsubmit="return validateForm()">
    <input id="carea"  type="text" placeholder="leave a comment" name="cbox" >
    <input id="cb"  type="submit"  value="Post" />
    <input id="cn"  type="text"  placeholder="Name" name="cname">
</form>

我希望当我刷新我的页面时我的数据不应该被重新提交谢谢

4

1 回答 1

1

如果你真的坚持使用 GET 提交,这实际上不是一个好方法。您应该使用服务器端的 HttpResponseRedirect 进行请求重定向,这将从 url 中删除查询字符串。这样它就不会恢复表单。

def show(request,post_id):
    try:
        p = post.objects.get(pk=post_id)
        c = comment.objects.filter(blog_id=p)
        if 'cbox' in request.GET:
            c = comment(text=request.GET['cbox'],name=request.GET['cname'],blog=p)
            c.save()
            #Do a redirect here 
            return HttpResponseRedirect("URL of the page you would like to redirect")
        c_list = comment.objects.filter(blog_id=p)   
    except  post.DoesNotExist:
        raise Http404
    return render_to_response('show.html',{'post':p,'c_list':c_list})
于 2012-12-22T18:26:51.290 回答