0
以下のDjangoビューへのPOSTリクエストでは、(403)CSRFの検証に失敗しました。隠されたcsrfトークンがページのソースに表示されることを確認しました。他のビューでもエラーなしでPOSTリクエストを行うことができます。私はさらにデバッグする方法が不明です。Django CSRFの検証に失敗しました。{%csrf_token%}
views.py:
def email(request):
if request.method == 'POST':
email = request.POST['email']
fd = open('emaildb.csv','a')
fd.write(email+',somefile\n')
fd.close()
return render(request, 'receipts/email.html', {'text':'Thanks, we''ll get back to you soon.'})
else:
return render(request, 'receipts/email.html',)
email.html:
<form action="email" method="post" enctype="text/plain">
{% csrf_token %}
E-mail:<br>
<input type="text" name="email">
<input type="submit" value="Send">
</form>
のような使用して、フォームにこのメソッドを呼び出す方法 ' "/プレーンテキスト"'のenctypeを=削除し、もう一度試してはどうですか? 'action =" {%url 'name_of_url'%} "'を使用するか、同じビューでPOSTする場合は 'action =" email "' '全部。 –
有効なトークンがページソースに表示されていても、有効なトークンを持っているとは限りません。それも期限切れになる可能性があります。 –
nik_mが正しいです。単にenctype = "text/plain"を削除するだけで問題は解決しました。 – Feyman81