WhatsApp

  
Gestión de formularios y entrada de usuarios en Flask
Integra Flask-WTF y la clave secreta para tus formularios

En el desarrollo web con Flask, la interacción con los usuarios a menudo implica la utilización de formularios para recopilar información. En este artículo, exploraremos algunos aspectos clave relacionados con la gestión de formularios y la entrada de usuarios en Flask. 

Uso del objeto request para obtener datos del usuario

En Flask, el objeto ''request'' juega un papel esencial al procesar datos proporcionados por los usuarios. Este objeto nos permite acceder a los datos de la solicitud HTTP, incluidos los datos de los formularios enviados. Mediante el uso de request.form, podemos extraer información valiosa ingresada por el usuario y utilizarla en nuestras aplicaciones.

Validaión de formularios

La validación de formularios es crucial para garantizar la integridad y la seguridad de los datos recibidos. Flask proporciona diversas herramientas para llevar a cabo esta validación de manera efectiva. Al implementar reglas y restricciones en los datos enviados, podemos prevenir posibles problemas y mejorar la experiencia del usuario al mismo tiempo.

Flask-WTF: extensiones para trabajar con formularios

Flask-WTF es una extensión de Flask que simplifica significativamente la creación y validación de formularios. Esta extensión se basa en la popular biblioteca WTForms y ofrece una integración perfecta con Flask. Con Flask-WTF, puedes definir formularios de manera fácil y rápida, gestionar la validación de datos y generar interfaces de usuario interactivas de manera eficiente.

Flask-WTF y la clave secreta

¿Por qué se necesita una clave secreta?

Flask-WTF utiliza la clave secreta (SECRET_KEY) de Flask para proporcionar seguridad adicional a la gestión de formularios, especialmente para proteger contra ataques de falsificación de solicitudes entre sitios (CSRF). La clave secreta se utiliza para generar tokens CSRF, que son incluidos en los formularios. Estos tokens ayudan a verificar que las solicitudes POST provienen de un formulario legítimo generado por la propia aplicación y no de un sitio malicioso.

Configuración de la Clave Secreta

Para configurar la clave secreta en una aplicación Flask que utiliza Flask-WTF, debes asignar un valor a la configuración SECRET_KEY. Puedes hacerlo de la siguiente manera:

    	from flask import Flask
        from flask_wtf import FlaskForm
        app = Flask(__name__)
        app.config['SECRET_KEY'] = 'valor_de_la_clave_secreta'

Como generar una clave secreta

En la práctica, es preferible generar una clave secreta aleatoria en lugar de fijar un valor estático. Puedes utilizar funciones como secrets.token_hex para generar una cadena hexadecimal aleatoria. Aquí tienes un ejemplo:

        import secrets
        app.config['SECRET_KEY'] = secrets.token_hex(16)  
        # 16 bytes, 32 caracteres hexadecimales

Manten segura tu clave secreta

La clave secreta es una información sensible y debe ser manejada con cuidado. Nunca la compartas públicamente o la incluyas directamente en el código fuente si puedes evitarlo. Puedes almacenarla como una variable de entorno y cargarla en tu aplicación Flask para mayor seguridad, especialmente en entornos de producción.

Ejemplo ilustrativo

Asegurate de tener instalado Flask y  Flask-WTF de preferencia en un entorno virtual. Puedes instalarlos ejecutando el siguiente comando en la terminal:

        pip install Flask Flask-WTF

Crea una carpeta para tu proyecto, de modo que dentro de ella tengas un archivo llamado app.py, y una carpeta 'templates', dentro de ella, 2 archivos HTML: index.html y saludo.html

Archivo app.py
    from flask import Flask, render_template, request
    from flask_wtf import FlaskForm
    from wtforms import StringField, SubmitField
    app = Flask(__name__)
    app.config['SECRET_KEY'] = 'clave_secreta'  # Necesario para Flask-WTF
    class NameForm(FlaskForm):
        name = StringField('Nombre:')
        submit = SubmitField('Enviar')
    @app.route('/', methods=['GET', 'POST'])
    def index():
        form = NameForm()
        if form.validate_on_submit():
            name = form.name.data
            return render_template('saludo.html', name=name)
        return render_template('index.html', form=form)
    if __name__ == '__main__':
        app.run(debug=True)
index.html
    <!DOCTYPE html>
    <html lang="es">
    <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Formulario de Saludo</title>
    </head>
    <body>
    <h1>Formulario de Saludo</h1>
    <form method="POST" action="/">
    {{ form.hidden_tag() }}
    {{ form.name.label }} {{ form.name(size=20) }}
    {{ form.submit() }}
    </form>
    </body>
    </html>
saludo.html
    <!DOCTYPE html>
    <html lang="es">
    <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Saludo</title>
    </head>
    <body>
    <h1>Hola, {{ name }}. ¡Bienvenido!</h1>
    </body>
    </html>
Ejecuta tu aplicacion con el siguiente comando y dirigete a la dirección que te proporciona.
        python app.py

Generalmente la dirección es:   http://127.0.0.1:5000/

 Resultado

Al hacer clic en Enviar verás esta pagina:

Has llegado al final de este blog sobre la gestión de formularios y entrada de usuarios en Flask. Ahora posees conocimientos para mejorar la interactividad y la seguridad de tus aplicaciones web.

Recuerda, la comprensión de conceptos como el uso del objeto request, la validación de formularios y la integración de Flask-WTF te brindará una base robusta para tus proyectos.


Kevin Rodríguez 19 febrero, 2024
Compartir


Iniciar sesión dejar un comentario

  
La Importancia de un Contrato de Seguridad Informática