在django中刷新提交的表单时数据库中的重复条目

时间:2012-12-22 00:24:09

标签: django django-forms django-templates django-views

我使用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>

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

1 个答案:

答案 0 :(得分: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})