Bir eğitmenden basit bir form oluşturmaya çalışırken CSRF doğrulama başarısız mesajı alıyorum.Django - CSRF doğrulaması başarısız oldu
: Ben bildiğim kadarıyla size html olanlar csrf_token etiketlerden biri gerekiyor, ama benİşte benim şablon olduğunu yoksa bunu kullanmak için aslında ne CSRF doğrulama içine küçük bir araştırma yaptım ve contact.html
İştebulunan
<form action="/testapp1/contact/" method="post">
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>
Oldukça basit, benim urlconf var: django.conf.urls.defaults dan içe *
urlpatterns=patterns('testapp1.views',
(r'^$', 'index'),
(r'^contact/$','contact')
)
Uygulama adı testapp1. URL'mi yazdığımda (http: // localhost: 8000/testapp1/contact), doğru şekilde forma giderim. Sonra formu gönderdiğimde doğrulama hatasını alıyorum.
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,
})
Ya ben sadece GOTTE vardı: mytemlate.html
Bunu yapmak için n. CSRF korumasının isteğe bağlı olduğunu sanıyordum. Görünüşe göre bir form gönderirseniz CSRF'yi kullanmak için İHTİYACINIZ veya işe yaramaz. Oh iyi. Teşekkürler – JPC@JPC: yapılandırmanıza bağlı. CSRF katman yazılımını, 'csrf_excempt' dekoratörünü kullanmadığınız sürece gerekli olandan kullanırsanız. Kullanmıyorsanız, 'csrf_protect' dekoratörünü kullanmadığınız sürece gerekli değildir. – Wolph
Ayrıca, django.template import RequestContext'den içe aktarmanız gerekir – northben