Recibo un mensaje de error de verificación de CSRF al intentar crear un formulario simple a partir de un tutorial. Hice un poco de investigación en lo que la verificación CSRF que realmente es, y que yo sepa, con el fin de usarlo necesita una de esas etiquetas csrf_token en su html, pero no tiene queDjango - Falló la verificación de CSRF
Aquí es mi plantilla:
<form action="/testapp1/contact/" method="post">
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>
bastante sencillo, situado en contact.html
Aquí es mi URLconf: de django.conf.urls.defaults importar *
urlpatterns=patterns('testapp1.views',
(r'^$', 'index'),
(r'^contact/$','contact')
)
El nombre de la aplicación es testapp1. Cuando escribo mi url (http: // localhost: 8000/testapp1/contact), voy correctamente al formulario. Luego, cuando envío el formulario, obtengo el error de verificación.
Aquí es mi punto de vista, aunque no creo que sea relevante:
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 que acababa de gotte n a trabajar haciendo eso. Creo que pensé que la protección de CSRF era opcional. Aparentemente, si envía un formulario NECESITA usar CSRF o no funcionará. Oh bien. Gracias – JPC
@JPC: depende de su configuración. Si usa el middleware CSRF de lo requerido a menos que use el decorador 'csrf_excempt'. Si no lo usa, no es necesario a menos que use el decorador 'csrf_protect'. – Wolph
también necesitará 'importar desde django.template import RequestContext' – northben