Otrzymuję komunikat o niepowodzeniu weryfikacji CSRF podczas próby utworzenia prostego formularza z samouczka. Zrobiłem trochę badań w to, co weryfikacji CSRF faktycznie jest i według mojej wiedzy, w celu wykorzystania go trzeba jedną z tych csrf_token znaczników w HTML, ale nie mam, żeDjango - weryfikacja CSRF nie powiodła się
Oto mój szablon:
<form action="/testapp1/contact/" method="post">
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>
dość proste, położony na contact.html
Oto mój URLconf: z django.conf.urls.defaults import *
urlpatterns=patterns('testapp1.views',
(r'^$', 'index'),
(r'^contact/$','contact')
)
Nazwa aplikacji to testapp1. Kiedy wpisuję mój adres URL (http: // localhost: 8000/testapp1/contact), poprawnie przejdę do formularza. Następnie, po przesłaniu formularza, pojawia się błąd weryfikacji.
Oto mój widok, choć nie sądzę, że to istotne:
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 I właśnie Götte do pracy. Sądzę, że myślałem, że ochrona CSRF jest opcjonalna. Najwyraźniej, jeśli prześlesz formularz, POTRZEBUJESZ skorzystać z CSRF lub nie zadziała. No cóż. Dzięki – JPC
@ JPC: to zależy od konfiguracji. Jeśli używasz oprogramowania pośredniczącego CSRF, niż jest to wymagane, chyba że używasz dekoratora 'csrf_excempt'. Jeśli go nie używasz, nie jest to wymagane, chyba że używasz dekoratora 'csrf_protect'. – Wolph
należy również "importować z django.template import RequestContext" – northben