flask template form
Este tutorial explica qué son las plantillas, formularios, vistas, respuestas y redirecciones de matraces con ejemplos prácticos:
En general, la creación de plantillas se utiliza en programación para reutilizar una parte del texto con datos diferentes. Con respecto al desarrollo web, los diseñadores utilizan plantillas para mostrar datos en una forma que sea legible y atractiva para los lectores humanos.
Un diseño de plantilla generalmente implica el uso de un lenguaje debido a las complejidades que plantea la interacción humana.
=> Eche un vistazo a la guía para principiantes de matraces aquí
Lo que vas a aprender:
- Introducción
Introducción
Flask utiliza un motor de plantillas llamado Jinja2, que muestra el comportamiento de una aplicación según el nivel de interacción del usuario. Una plantilla de Jinja usa variables, expresiones y etiquetas.
Las variables y expresiones se reemplazan por valores durante el tiempo de ejecución antes de la representación de la página en el navegador. Las etiquetas Jinja ayudan a escribir la lógica y las declaraciones de control en la plantilla Flask.
Vista del matraz
La noción de vista Flask se deriva de un patrón de diseño de aplicaciones web predominante llamado Modelo-Vista-Controlador. Una vista es uno de los tres elementos interconectados en este paradigma, donde se ocupa de la lógica de la aplicación. La vista se encarga de la presentación de información al Usuario.
aplicaciones de java en el mundo real
En nuestro tutorial anterior, diseñamos una vista subclasificando la clase BaseView del Flask-Appbuilder. En la parte siguiente de este tutorial, ampliaremos nuestro último ejemplo y presentaremos las formas en que las Vistas se pueden personalizar.
Plantilla de matraz
Comencemos y escribamos nuestra primera plantilla. Cree un archivo llamado hello.html en el directorio de plantillas.
Escriba el siguiente código en ese archivo y guárdelo.
|_+_|Plantilla para bucle
En la plantilla de Flask anterior, hemos utilizado un bucle for para iterar en los elementos de la lista. En nuestro controlador o manejador, pasamos una lista con valores de saludos a la plantilla. Dentro de la plantilla, accedemos a cada elemento usando la sintaxis {{item}}.
Plantilla si bloque
Además, tome nota del uso de una declaración if. Aquí, probamos el elemento para Morning y lo ponemos en negrita y cursiva.
Ahora avancemos para aprender más sobre los conceptos de Flask Forms.
Formas de matraces
Uno de los aspectos más cruciales de la creación de plantillas es tomar las entradas de los usuarios y escribir la lógica de backend basada en esa entrada. Creemos una forma.
Usamos Flask-Appbuilder SimpleFormView para renderizar nuestro formulario. Sin embargo, primero creemos un formulario. Además de la creación de un formulario, necesitamos usar el comando flask fab create-admin para crear un usuario administrador.
Por lo tanto, utilice el comando antes de iniciar el servidor de desarrollo para que las vistas y los formularios creados posteriormente se puedan validar con un usuario que haya iniciado sesión. Iniciamos sesión con el usuario administrador y seguimos validando que las vistas creadas son visibles en el menú como se muestra en las capturas de pantalla.
Crear administrador
Utilice el siguiente comando para crear un usuario administrador.
matraz fab create-admin
Inicie sesión con las credenciales de administrador
- Haga clic en Iniciar sesión después de navegar a http: // localhost: 8080.

- Inicie sesión con las credenciales de administrador, creadas en la sección anterior.

- Haga clic en la categoría Mis formularios para acceder a sus vistas.

Nota: Podrá realizar el último paso solo después de agregar las vistas al menú predeterminado que se muestra en la barra de navegación.
Sigamos adelante y creemos algunas vistas basadas en formularios.
Cree un archivo llamado forms.py en el directorio de la aplicación y escriba el siguiente código en él.
|_+_|Hemos creado un formulario basado en DynamicForm de Flask-Appbuilder. Hay cuatro campos de texto. Extendemos nuestro ejemplo de saludos. De los cuatro campos, dos son obligatorios y dos son opcionales porque, para los dos primeros saludos, hemos mencionado los valores para validadores.
Ahora creemos una vista para este formulario. Escriba las siguientes líneas de código en el archivo views.py.
|_+_|En nuestra vista anterior, tenemos dos métodos llamados form_get y form_post para completar los valores predeterminados en los campos de los formularios y leer los valores ingresados una vez que el formulario se envía desde el navegador, respectivamente.
GreetingsView muestra el formulario, como se muestra en la siguiente imagen.

También hacemos uso de un objeto de sesión Flask para almacenar los valores de campo en form_post para que podamos acceder al mismo en la nueva vista correspondiente que estamos a punto de escribir.
Ahora modifiquemos la clase HelloWorld y agreguemos otro método para mostrar los saludos. Lo llamaremos hello_greetings2.
|_+_|En esta vista, leemos los valores del objeto de sesión y usamos la plantilla de renderización Flask para mostrar esos valores en el HTML de cara al usuario. Note que hello_greetings2 es una forma alternativa de lograr la misma funcionalidad similar a hello_greetings.
La única diferencia es que al usar hello_greetings2, estamos mostrando los valores que ingresa el usuario, y en hello_greetings no tomamos ninguna entrada del usuario y los codificamos mientras escribíamos la vista mapeada a la ruta respectiva.
Respuesta del matraz
Es bastante raro que encuentre el uso explícito de la respuesta de Flask en el código. La clase Response en Flask es solo una subclase de la clase Response de la clase Response de Werkzueg, que a su vez subclasifica su clase ResponseBase.
El objeto Flask Response lo forma internamente Flask cada vez que llamamos a una declaración de retorno o un método como render_template.
Además, podemos personalizar el código de respuesta y el tipo de contenido si es necesario como parte de la declaración de devolución en nuestras vistas, como se muestra en la vista de HelloWorld modificada a continuación.
|_+_|El uso directo de la clase Response de Flask se puede cubrir en un caso de uso cuando transmitimos el contenido en lugar de devolver el contenido completo de una vez debido a las limitaciones del tamaño del archivo y el ancho de banda de la red.
A continuación, mostramos un ejemplo de transmisión de contenido desde un CSV grande.
|_+_|Redireccionamiento del matraz
No siempre es posible para una aplicación predefinir la respuesta en función de las diferentes solicitudes del cliente.
Usamos Flask Redirect, en escenarios, donde es posible servir el contenido que puede ser cumplido por otras vistas o ubicaciones en respuesta a una solicitud. Usamos Flask Redirect junto con abortar con los códigos de retorno HTTP estándar.
Por ejemplo, en el siguiente código, usamos Redirect con HTTP Code 301 y abortamos con 401.
|_+_|Además, verifique en GreetingsView donde hemos hecho uso de Flask redirect y url_for para redirigir una solicitud internamente a una vista diferente almacenando los valores de los saludos en el objeto de sesión. Flask redirect siempre devuelve un objeto de respuesta, con el código de estado predeterminado o dado a otra ubicación en la aplicación.
Barra de herramientas de depuración de matraces
Ya presentamos el depurador interactivo de Flask en nuestro último tutorial. En este tutorial, damos un paso más para facilitar la depuración de la aplicación Flask. Una vez instalada, la barra de herramientas Flask Debug se muestra superpuesta sobre la aplicación Flask.
Instale la barra de herramientas Flask Debug.
|_+_|Para activar la barra de herramientas de depuración, abra el archivo __init__.py en nuestro proyecto y modifique el código agregando las siguientes líneas de código.
|_+_|Tenga en cuenta que la barra de herramientas de depuración de Flask solo está habilitada en el modo de depuración. Una vez habilitado, cuando recargues tu aplicación, observarás dos cosas.
#1) La barra de herramientas de depuración aparece en el lado derecho del navegador. Haga clic y amplíelo para ver las diversas funciones que ofrece la barra de herramientas.

#2) Cada vez que se envía una nueva solicitud POST a la aplicación, es interceptada por la barra de herramientas para que podamos inspeccionar las variables y los demás parámetros relacionados con la depuración de la aplicación.

Esta intercepción predeterminada se puede desactivar con la siguiente configuración.
|_+_|
Ahora vamos a escribir algunas pruebas para probar nuestras vistas de las funciones adicionales que hemos introducido en la aplicación de muestra.
Antes de continuar con la prueba, desactive la depuración como se muestra a continuación en __init__.py. Alternativamente, puede comentar la línea a continuación.
|_+_|Prueba de vistas de aplicaciones de matraces
Necesitamos organizar el código de prueba para hacerlo más manejable. Cree un archivo llamado conftest.py en el directorio raíz y mueva las líneas mencionadas a continuación de test_hello.py a este archivo.
|_+_|Los dispositivos de pytest son cargados por pytest en tiempo de ejecución. Estos accesorios están disponibles y se comparten con todas las pruebas. Definir un conftest.py en la ruta raíz de cualquier proyecto se considera una práctica recomendada porque pytest puede reconocer todos los módulos del proyecto sin especificar un PYTHONPATH explícito.
Agregue una prueba más para el archivo test_hello. A continuación se ofrece un ejemplo de prueba. Llamamos al método get del objeto cliente y afirmamos el valor esperado en los datos de respuesta almacenados en resp.data.
Del mismo modo, puede escribir más pruebas que apunten a varias vistas. Escribiremos más pruebas en los tutoriales posteriores.
|_+_|Ejecute las pruebas con el siguiente comando desde el directorio raíz del proyecto.
|_+_|La ejecución de prueba produce los resultados de la prueba en la consola, como se muestra a continuación:

Aún no hay fallas. Diseñemos una prueba más, como se menciona a continuación.
|_+_|Esta prueba fallará ya que no definimos ningún atributo de mensaje en la clase HelloWorld en el archivo views.py.
Una vez que ejecute las pruebas usando pytest -v, nuevamente se mostrarán en la consola resultados similares a la imagen que se muestra a continuación.

La siguiente sección explica los pasos que debemos realizar mientras ejecutamos las pruebas en una plataforma CI / CD. Usamos Git Actions para el mismo proyecto.
CI / CD con acciones de Git
Ahora guardamos todos los cambios en los archivos y creamos una confirmación dando el mensaje para este tutorial. Después de confirmar en el repositorio local, extraemos los cambios del origen remoto con el indicador –rebase para ver si hay algún conflicto con los nuevos cambios en el remoto. Rebasamos para mantener la coherencia del historial.
Utilice el siguiente comando para extraer y fusionar los cambios desde el origen remoto. Sin embargo, confirme sus cambios antes de extraer los cambios desde remoto.
|_+_|Ahora revise la rama maestra local y combínela con la rama tutorial-2. Una vez que la fusión sea exitosa, publique esos cambios en el maestro del origen. Esta acción invocará las compilaciones en las plataformas de destino. Estamos probando este código en Python3.7 y Python 3.8 en Ubuntu más reciente.
Conclusión
En este tutorial, vimos cómo funcionan las plantillas en el marco de Flask. Describimos los pasos para crear y renderizar plantillas de matraces con valores definidos por el usuario usando variables y expresiones.
También vimos ejemplos de una vista predefinida BaseView del complemento Flask Appbuilder. Los desarrolladores de Flask pueden subclasificar esta vista fácilmente para crear vistas personalizadas.
Los conceptos cubiertos hasta ahora ayudan a los lectores a crear rápidamente sitios web estáticos y dinámicos utilizando Flask sin un backend de base de datos. Explicaremos cómo leer y escribir datos desde y hacia las bases de datos con ModelView en el siguiente tutorial cuando veamos el concepto de usar bases de datos con Flask.
=> Lea la serie de capacitación Easy Flask
Lectura recomendada
- Tutorial de Python Flask - Introducción a Flask para principiantes
- Patrones de diseño de matraces y mejores prácticas para aplicaciones web
- Tutorial de API de matraz con ejemplo | Ampliación de Flask con API
- Biblioteca de plantillas estándar (STL): una breve introducción
- Qué es el escenario de prueba: plantilla de escenario de prueba con ejemplos
- Plantilla de caso de prueba de muestra con ejemplos de casos de prueba (Descargar)
- Plantilla de muestra para el informe de prueba de aceptación con ejemplos
- Plantillas en C ++ con ejemplos