Django形成Forbidden(403)错误

时间:2012-05-12 11:35:57

标签: django-forms

当我点击我的虚拟表单的提交按钮时,我收到以下错误

  

禁止(403)

     

CSRF验证失败。请求已中止

我的views.py(已完成上面所需的导入)如下所示:

def search(request):
       errors=[]
       if request.method=="POST":
             if not request.POST['name']:
                       errors.append('Name field is empty')
             if not request.POST['subject']:
                       errors.append('Subject field is empty')
             if not request.POST['age']:
                       errors.append('Age field is empty')
             if not errors:
                       thank()
       return render_to_response('search.html',{'errors':errors},context_instance=RequestContext(request))

def thank(search):
      return HttpResponse('<html><p>Post done successfully</p></html>')

我的search.html是:

    <form method="post" action='/search/'>
     <p>Name: <input type="text" name="name"/></p>
     <p>Subject  <input type="text" name="subject"/></p>
     <p>Age: <input type="text" name="age"/></p>
     <input type="submit" value="Hit Me!!"/>
    </form>
  </body>
 </html>

有人请让我知道,我怎样才能克服这个错误?

2 个答案:

答案 0 :(得分:0)

那么,

1。将'django.core.context_processors.csrf'添加到settings.py中的TEMPLATE_CONTEXT_PROCESSORS设置。 2.修改你的表格,

<form method="post" action='/search/'>
  {% csrf_token %}
  <p>Name: <input type="text" name="name"/></p>
  <p>Subject  <input type="text" name="subject"/></p>
  <p>Age: <input type="text" name="age"/></p>
  <input type="submit" value="Hit Me!!"/>
</form>

答案 1 :(得分:0)

我要说,我在{% csrf_token %}标签之间看不到<form></form>。这将导致CSRF验证失败。上面的海报打败了我。