チュートリアルから簡単なフォームを作成しようとすると、CSRF検証に失敗しましたというメッセージが表示されます。Django - CSRF検証に失敗しました
:私は、私の知る限り、あなたは、HTMLのものcsrf_tokenのタグのいずれかが必要ですが、私ははここに私のテンプレートだと持っていない、それを使用するために、実際にどのようなCSRFの検証に少し研究をした、とcontact.html
に位置
<form action="/testapp1/contact/" method="post">
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>
かなり簡単には、ここに私のURLconfです:django.conf.urls.defaultsから はインポート*
urlpatterns=patterns('testapp1.views',
(r'^$', 'index'),
(r'^contact/$','contact')
)
アプリケーション名はtestapp1です。 URL(http:// localhost:8000/testapp1/contact)を入力すると、フォームに正しく行きます。私がフォームを提出すると、検証エラーが出ます。
def contact(request):
if request.method == 'POST': # If the form has been submitted...
form = ContactForm(request.POST) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
subject = form.cleaned_data['subject']
message = form.cleaned_data['message']
sender = form.cleaned_data['sender']
cc_myself = form.cleaned_data['cc_myself']
recipients = ['[email protected]']
if cc_myself:
recipients.append(sender)
print 'Sending Mail:'+subject+','+message+','+sender+','+recipients
return HttpResponseRedirect('/thanks/') # Redirect after POST
else:
form = ContactForm() # An unbound form
return render_to_response('contact.html', {
'form': form,
})
雅私はちょうどgotteを持っていましたそれをするために働くことはできません。 CSRFの保護はオプションであると私は思った。あなたがCSRFを使用する必要があるフォームを提出した場合は、明らかに効力を発揮しません。しかたがない。ありがとう – JPC
@ JPC:あなたの設定によります。 'csrf_excempt'デコレータを使用しない限り、CSRFミドルウェアを使用するのであれば必須です。あなたが 'csrf_protect'デコレータを使わないかぎり、それを使用しない場合は不要です。 – Wolph
あなたはまた、 'django.templateからimport import RequestContext'する必要があります – northben