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 に答える