1
장고를 처음 사용하고 CSRF 확인에 문제가 있습니다. 지금까지 Django POST 양식을 성공적으로 작성했으며 CSRF 오류가 없습니다. 그러나 다음 양식을 만들려고 할 때 CSRF 확인 실패 : "CSRF 토큰 누락 또는 부정확"이 표시됩니다.장고 CSRF 확인 실패
다음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 요청을 처리하는 코드를 추가하지 않은)처럼 그 양식에 대한보기 기능이 모습입니다 : 여기
{% 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 %}
는 모델처럼 보이는 것입니다 :
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)
기본적으로 각 질문마다 여러 답변이 있습니다. 사용자가 특정 답변과 연결된 버튼을 클릭 할 수있게하려고합니다. 사용자가 버튼을 클릭하면 데이터베이스에서 해당 답변에 대한 투표를 늘리고 싶습니다. 아직 코드를 추가하지 않았지만 이것이 목표입니다. 그런 다음 새로 추가 된 투표로 페이지를 다시로드하길 원합니다.
는 아무도 내가 잘못 일을 오전 또는 내가 무엇을 놓치고 무엇을 알고 있나요?
감사합니다.
안녕하세요, 당신의 응답을 주셔서 감사합니다. 예, 나는 그것을 시도하고 동일한 오류가 발생합니다. – km786
페이지를 새로 고쳤습니까? –
이것은 기본적으로 정확합니다. 위의 코드는 위에 몇 가지 문제가 있습니다. 먼저 CSRF 토큰의 유효성을 검사 할 수있는 파이썬 양식이 없으며 둘째로 많은 양식이 있습니다 (루프 내부에 양식 태그가 있으므로). 이 방법으로는 작동하지 않습니다. glitches를 해결하기 위해 HTML에서 하나의 양식 만 필요로하는 적절한 파이썬 양식을 작성하십시오. – dahrens