Django CSRF 验证失败
Django CSRF verfication failed
我是 Django 的新手,我遇到了 CSRF 验证问题。到目前为止,我已经创建了成功且没有 CSRF 错误的 Django POST 表单。但是当我尝试创建以下表单时,CSRF 验证失败:"CSRF token missing or incorrect".
{% for a in answers %}
{% csrf_token %}
<form class="" action="." method="post">
<input type="submit" value="{{ a.answer }}" name={{a.answer_id}}></input>
</form>
<p>Number of votes: {{ a.votes }}</p>
{% empty %}
<p>There are no answers for the poll</p>
{% endfor %}
模型如下:
class Question(models.Model):
date_added = models.DateTimeField(auto_now_add=True)
question = models.CharField(max_length=200)
number_of_answers = models.IntegerField(default=0)
class Answer(models.Model):
question = models.ForeignKey(Question)
answer = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
下面是该表单的视图函数(到目前为止我还没有添加任何代码来处理 post 请求):
def poll(request, question_id):
if request.method == "POST":
pass
poll = Question.objects.get(id=question_id)
answers = poll.answer_set.order_by()
context = {'poll' : poll, 'answers' : answers}
return render(request, 'polls/poll.html', context)
基本上,每个问题都有多个答案。我想让用户单击与特定答案关联的按钮。一旦用户单击一个按钮,我想在数据库中增加对该答案的投票(我还没有添加代码来执行此操作,但这是目标)。然后我希望页面重新加载新添加的投票。
有人知道我做错了什么或者我错过了什么吗?
谢谢!
csrf 令牌包含在表单中:
<form class="" action="." method="post">
{% csrf_token %} <!--here goes the token-->
<input type="submit" value="{{ a.answer }}" name={{a.answer_id}}></input>
</form>
我是 Django 的新手,我遇到了 CSRF 验证问题。到目前为止,我已经创建了成功且没有 CSRF 错误的 Django POST 表单。但是当我尝试创建以下表单时,CSRF 验证失败:"CSRF token missing or incorrect".
{% for a in answers %}
{% csrf_token %}
<form class="" action="." method="post">
<input type="submit" value="{{ a.answer }}" name={{a.answer_id}}></input>
</form>
<p>Number of votes: {{ a.votes }}</p>
{% empty %}
<p>There are no answers for the poll</p>
{% endfor %}
模型如下:
class Question(models.Model):
date_added = models.DateTimeField(auto_now_add=True)
question = models.CharField(max_length=200)
number_of_answers = models.IntegerField(default=0)
class Answer(models.Model):
question = models.ForeignKey(Question)
answer = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
下面是该表单的视图函数(到目前为止我还没有添加任何代码来处理 post 请求):
def poll(request, question_id):
if request.method == "POST":
pass
poll = Question.objects.get(id=question_id)
answers = poll.answer_set.order_by()
context = {'poll' : poll, 'answers' : answers}
return render(request, 'polls/poll.html', context)
基本上,每个问题都有多个答案。我想让用户单击与特定答案关联的按钮。一旦用户单击一个按钮,我想在数据库中增加对该答案的投票(我还没有添加代码来执行此操作,但这是目标)。然后我希望页面重新加载新添加的投票。
有人知道我做错了什么或者我错过了什么吗?
谢谢!
csrf 令牌包含在表单中:
<form class="" action="." method="post">
{% csrf_token %} <!--here goes the token-->
<input type="submit" value="{{ a.answer }}" name={{a.answer_id}}></input>
</form>