validate_on_submit y tokens CSRF
Procese envíos válidos y bloquee falsificaciones.
validate_on_submit y tokens CSRF es una lección gratuita de Flask Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Flask Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Flask Academy incluye 4 lecciones en total.
El método esencial
Flask-WTF le proporciona un método que lo comprueba todo de una vez. validate_on_submit es el núcleo del procesamiento seguro de cualquier formulario. 🔑
Qué comprueba realmente
validate_on_submit devuelve True únicamente cuando la solicitud es un POST y todos los validadores se cumplen. Una sola llamada cubre ambas condiciones.
if form.validate_on_submit():
pass # safe to use the dataEl patrón de vista estándar
Esta estructura se repite en todas las aplicaciones Flask: cree el formulario, ramifique según validate_on_submit y, después, continúe hasta renderizar la página.
form = LoginForm()
if form.validate_on_submit():
return redirect('/home')
return render_template('login.html', form=form)Enviado frente a válido
No confunda ambos conceptos. is_submitted solo comprueba el método, mientras que validate_on_submit también confirma que los datos cumplen todas las reglas.
form.is_submitted() # POST?
form.validate_on_submit() # POST and valid?Por qué importa CSRF
Un ataque CSRF engaña a un usuario que ha iniciado sesión para que envíe un formulario que nunca quiso enviar. Los tokens demuestran que la solicitud procede de su propia página.
SECRET_KEY es obligatorio
Los tokens CSRF están firmados, por lo que Flask necesita una SECRET_KEY. Sin ella, la validación falla y Flask-WTF no puede proteger el formulario.
app.config['SECRET_KEY'] = 'change-me-in-production'El token en la página
Esa llamada a hidden_tag inserta el token firmado como una entrada oculta. El navegador lo envía de vuelta con cada envío.
{{ form.hidden_tag() }}La validación compara los tokens
Al enviar el formulario, Flask-WTF compara el token enviado con el de la sesión. Un token ausente o caducado hace que validate_on_submit devuelva False.
if not form.validate_on_submit():
pass # bad token or failed ruleComprobar por qué falló
Cuando la validación falla, consulte form.errors. Este atributo relaciona cada nombre de campo con la lista de mensajes que explica el problema.
if not form.validate_on_submit():
print(form.errors)Procesar y después redirigir
Después de enviar correctamente el formulario, termine con una redirect. Esto sigue el patrón PRG y evita que una actualización vuelva a enviarlo.
if form.validate_on_submit():
save(form.data)
return redirect('/done')No desactive CSRF sin más
Puede desactivar CSRF para las API, pero nunca para los formularios del navegador. Mantener activa la protección es lo que hace que merezca la pena usar Flask-WTF.
Comprobación rápida
¿Cuándo devuelve True form.validate_on_submit()?
Resumen
Ha utilizado validate_on_submit para comprobar el método y las reglas, ha configurado una SECRET_KEY para firmar los tokens CSRF y ha redirigido después de una operación correcta. 🛡️
Preguntas frecuentes
¿La lección «validate_on_submit y tokens CSRF» es gratis?
Sí — el texto completo de «validate_on_submit y tokens CSRF» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Flask Academy, actualiza a CoddyKit PRO. El curso de Flask Academy incluye 4 lecciones en total.
¿Qué aprenderé en «validate_on_submit y tokens CSRF»?
Procese envíos válidos y bloquee falsificaciones. Practicas Flask Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Flask Academy?
No se requiere experiencia previa. Flask Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «validate_on_submit y tokens CSRF»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Flask Academy?
Sí. Cada lección de Flask Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Defina una clase FlaskForm
- Renderice y envíe un formulario
- validate_on_submit y tokens CSRF
- Validadores personalizados y errores de campo