2012-12-22 105 views
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> 

我想,當我刷新我的網頁我的數據不能得到resubmited 謝謝

+2

http://en.wikipedia.org/wiki/Post/Redirect/Get –

+0

我使用這裏 –

+1

在Django的教程GET方法4 https://docs.djangoproject.com/en/dev/intro/tutorial04 /,'使用method =「post」(而不是method =「get」)非常重要,因爲提交這個表單的行爲將會改變數據服務器端。每當你創建一個改變數據服務器端的表單時,使用method =「post」。這個提示並不是針對Django的;這只是一個很好的Web開發實踐。' –

回答

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})