Este es el curso MÁS completo que encontrarás de Flask, veremos de todo, desde aspectos básicos como las rutas, controladores, vistas, modelos, manejo de formularios, validaciones, entre otros hasta aspectos más completos como Rest Api con token de autenticación (y una app para consumir la misma desde Vue), manejo de cache, roles, paquetes imprecindibles y mucho más, el detalle del curso lo puedes ver en la parte inferior de esta publicación y lo mejor, es que es una inversión para varios años ya que, de manera gratuita, mantendré el curso por varios años a las nuevas versiones y dando mayor soporte por Academia.
Tambien tengo recursos gratuitos para el Curso en el Blog
Es importante mencionar, que el curso tambien tiene el formato en libro con el 100% del contenido del mismo, es decir, el curso es equivalente al libro.
Flask es un framework web estupendo para la creación de aplicaciones web del lado del servidor con Python; si no tienes conocimientos en el uso de frameworks web del servidor con Python, Flask es un buen candidato para inciar; al ser un microframework, lo que significa que inicialmente trae lo mínimo necesario para poder funcionar, puedes ir viendo de a poco cómo funciona el framework sin dar cabida a confusiones con archivos, estructura de directorios o módulos que no haz colocado, como sucede con otros frameworks más robustos como Django, que al crear un proyecto en Django, cuenta con muchos archivos y carpetas.
Aunque, que Flask sea un microframework no significa que debe ser empleado para proyectos pequeños, ya que, cuenta con una gran cantidad de extensiones que puedes configurar al proyecto en base a las necesidades del mismo; por ejemplo, si necesitas enviar emails, ya existen extensiones, al igual que si quieres realizar el login social, conectarse mediante ftp, módulos de usuarios, etc.
Este libro es mayoritariamente práctico, iremos conociendo los fundamentos de Flask, conociendo sus características principales en base a una pequeña aplicación que iremos expandiendo sección tras sección.
En este curso vas a aprender a crear tus primeras aplicaciones web en Flask framework empleando Python 3, junto con el lenguaje más famoso para este lenguaje de programación como lo es Python.
Flask es un framework web estupendo para la creación de aplicaciones web del lado del servidor con Python; si no tienes conocimientos en el uso de frameworks web del servidor con Python, Flask es un buen candidato para inciar; al ser un microframework, lo que significa que inicialmente trae lo mínimo necesario para poder funcionar, puedes ir viendo de a poco cómo funciona el framework sin dar cabida a confusiones con archivos, estructura de directorios o módulos que no haz colocado, como sucede con otros frameworks más robustos como Django, que al crear un proyecto en Django, cuenta con muchos archivos y carpetas.
Aunque, que Flask sea un microframework no significa que debe ser empleado para proyectos pequeños, ya que, cuenta con una gran cantidad de extensiones que puedes configurar al proyecto en base a las necesidades del mismo; por ejemplo, si necesitas enviar emails, ya existen extensiones, al igual que si quieres realizar el login social, conectarse mediante ftp, módulos de usuarios, etc.
Este curso es mayoritariamente práctico, iremos conociendo los fundamentos de Flask, conociendo sus características principales en base a una pequeña aplicación que iremos expandiendo capitulo tras capitulo.
Este Curso está dirigido a cualquier persona que quiera aprender a desarrollar en Flask sus primeras aplicaciones y conocer uno de los frameworks más famosos en el desarrollo de aplicaciones web con Python.
Para aquellas personas que conozcan cómo programar en Python u otros frameworks web.
Para aquellas personas que quieran aprender algo nuevo.
Para las personas que quieran mejorar una habilidad y que quieran crecer como desarrollador y que quiera seguir escalando su camino en el desarrollo de aplicaciones con Python.
Este es el contenido original del curso que fue regrabado con el contenido que veremos al final de la publicación:
Por aquí tienes el listado completo de clases que vamos a cubrir en el libro y curso:
Vamos a hacer unas pruebas para acceder a Python 3.
Vamos a crear el ambiente virtual.
Vamos a conocer algunos comandos básicos para trabajar en un proyecto en Python en general.
Vamos a crear un hola mundo.
Vamos a configurar VSC para que reconozca los paquetes del proyecto.
Vamos a conocer un par de maneras para manejar las configuraciones del proyecto y activar el modo debug.
Vamos a hablar sobre las características de Flask.
Vamos a presentar el esquema de una aplicación modular.
Vamos a crear el esquema presentado antes.
Vamos a activar las configuraciones.
Vamos a crear los controladores de tipo CRUD para las tareas.
Vamos a presentar los tipos de rutas y como definir parámetros en las rutas.
Vamos a presentar como usar la consola de Python, ideal para hacer pruebas.
Vamos a conocer como crear los archivos para programar en Python.
Vamos a conocer cómo emplear las variables y sus tipos de datos.
Vamos a conocer cómo funcionan las operaciones matemáticas en Python.
Vamos a conocer cómo funcionan las concatenaciones de String en Python.
Vamos a aprender a realizar casteos o conversión entre distintos tipos.
Vamos a aprender a trabajar con las listas.
Vamos a conocer el uso de los condicionales.
Vamos a conocer el uso de los ciclos while y for.
Daremos los primeros pasos con las funciones en Python
Daremos los primeros pasos con las funciones en Python
Vamos a conocer el uso de los diccionarios.
Vamos a hablar sobre las clases, su propósito, importancia y características bases.
Vamos a crear la primera clase y definir sus atributos y métodos.
Vamos a conocer como trabajar con los métodos constructores.
Vamos a conocer cómo emplear la herencia de clases.
Vamos a hablar sobre los módulos en Python.
Vamos a dar una introducción al motor de plantillas de jinja.
Vamos a configurar Jinja en el proyecto que pasa con crear la carpeta de templates.
Veremos de manera práctica cómo crear templates y usarlos desde Flask y pasar datos.
Vamos a ver otra demo en la cual, se consume un parámetro por GET desde el controlador.
Veremos el primer bloque de control, el condicional.
Veremos el bloque de control for.
Vamos a introducir los filtros en Jinja.
Vamos a presentar el primer filtro, el que permite imprimir un contenido por defecto cuando la expresión es nula.
Vamos a conocer cómo imprimir textos HTML o similares de manera segura.
Conversión entre tipos numéricos.
Devolver el máximo o mínimo de una lista.
Redondeamos un valor.
Reemplazamos un texto por otro.
Filtro join
Vamos a conocer cómo convertir textos a minusculas y mayusculas.
Vamos a conocer cómo invertir un texto o lista.
Vamos a conocer cómo obtener el tamaño de un texto o lista.
Vamos a conocer cómo ordenar una lista.
Vamos a conocer cómo dividir una lista en sublistas.
Vamos a conocer cómo establecer variables en el template.
Daremos una introducción a los bloques.
Vamos a presentar el bloque con el cual podremos imprimir el contenido sin procesar.
Vamos a conocer el equivalente de las funciones en Jinja 2.
Vamos a dar una introducción a los templates.
Vamos a crear un template maestro para la aplicación.
Vamos a mostrar un listado de tareas en el template creado anteriormente.
Vamos a crear un sencillo esquema con un formulario, para crear una tarea.
Proceso similar al anterior, pero, para actualizar una tarea definida localmente en el controlador.
Presentamos el uso de la función url_for para usar rutas con nombre.
Veremos cómo emplear las redirecciones.
Implementamos la opción de eliminar una tarea.
Vamos a hablar sobre las clases basadas en vistas y dar algunos ejemplos.
Vamos a implementar la aplicación de tareas empleando las VBC.
Vamos a aprender a crear un filtro personalizado.
Vamos a instalar las dependencias para SQLAlchemy.
Vamos a crear el enlace de conexión con la base de datos.
Vamos a crear el modelo.
Vamos a crear la tabla en la base de datos y realizar varias pruebas.
Vamos a crear las operaciones tipo CRUD para las tareas.
Vamos a probar las operaciones CRUD anteriores
Vamos a hablar sobre el paquete y su importancia.
Vamos a instalar la dependencia.
Vamos a configurar el paquete en el proyecto.
Vamos a hablar sobre algunos problemas que pueden ocurrir al momento de instalar Flask Migrate.
Vamos a conocer los comandos claves en Flask Migrate.
Vamos a generar las migraciones para el proyecto.
Vamos a reflejar las migraciones en la BD.
Vamos a conocer otros comandos claves en Flask Migrate.
Vamos a hablar sobre el paquete de WTForms para trabajar con los formularios en Flask.
Instalaremos la dependencia de WTForms.
Explicaremos de manera teórica cómo está formado un formulario.
Crearemos el primer formulario.
Vamos a crear una instancia y emplear el formulario.
Vamos a crear el proceso de actualizar.
Vamos a crear los campos de formularios para las tareas reutilizables para el proceso de crear y actualizar.
Vamos a modificar el proceso de listado.
Vamos a explicar cuales son las configuraciones a realizar y aplicarlas en el proyecto.
Crearemos el proceso de upload.
Vamos a crear el resto del proceso para crear el documento en la base de datos.
Vamos a crear el resto del proceso para crear el documento en la base de datos.
Vamos a mostrar el detalle de un documento desde la tarea.
Vamos a eliminar una tarea, el documento y el archivo.
Vamos a crear el modelo y relación foránea para las categorías.
Vamos a crear el resto del proceso para asignar una categoría a una tarea en la base de datos.
Vamos a crear el modelo para las etiquetas, la tabla pivote y migrar los cambios a la BD.
Vamos a crear el proceso de asignar una etiqueta a una tarea.
Vamos a crear el proceso de remover una etiqueta a una tarea.
Implementamos los mensajes tipo flash.
Vamos a aprender a agregar una categoría a los mensajes flash y filtrar por los mismos.
Vamos a clasificar los mensajes por tipo.
Vamos a instalar la extensión de Flask Login.
Vamos a realizar la configuración base para Flask Login.
Creamos los formularios para login y registrar.
Creamos el resto de las configuraciones de Flask Login.
Vamos a crear el módulo para registrar un usuario.
Vamos a crear el módulo para el login de un usuario.
Aprenderemos a proteger las rutas por login.
Implementamos la opción de logout.
Implementamos la opción de logout.
Definiremos los conceptos claves y el paquete a emplear.
Vamos a instalar la extensión de Flask Restful.
Crearemos una API de ejemplo.
Definimos el primer recurso para la API.
Vamos a hablar sobre el software de postman para probar la rest api.
Vamos a hablar e instalar el paquete de requests para probar la rest api.
Vamos a crear un esquema para serializar los parámetros.
Vamos a conocer el esquema oficial para serializar los campos.
Vamos a crear una tarea mediante una petición de tipo post.
Vamos a actualizar una tarea mediante una petición de tipo put.
Vamos a eliminar una tarea mediante una petición de tipo delete.
Vamos a conocer cómo emplear el parsing de Flask Restful.
Vamos a definir los argumentos.
Vamos a emplear los argumentos en los recursos de crear y actualizar.
Vamos a crear otro recurso para paginar.
Vamos a crear una API tipo CRUD para las categorías.
Vamos a crear una API tipo CRUD para las etiquetas.
Vamos a conocer cómo emplear el upload de archivos empleando el request.
Vamos a conocer cómo emplear el upload de archivos empleando el reqparse.
Vamos a devolver las etiquetas desde el listado.
Vamos a conocer un poco más sobre cómo proteger una Rest Api.
Vamos a instalar el paquete y configurarlo.
Vamos a generar el token de acceso.
Vamos a proteger la API y acceder al recurso mediante el token.
Vamos a obtener la identidad del token.
Vamos a conocer como personalizar el tiempo de expiración del token.
Vamos a crear la estructura base para las pruebas con requests.
Vamos a consumir el primer recurso sin auth.
Vamos a consumir el primer recurso con auth.
Vamos a crear una tarea desde el recurso de la Rest.
Vamos a actualizar una tarea desde el recurso de la Rest.
Vamos a eliminar una tarea desde el recurso de la Rest.
Hablamos sobre qué son las pruebas unitarias, el paquete a emplear y la importancia de emplear las mismas.
Vamos a instalar la extensión de Flask Restful.
Vamos a crear unas pruebas unitarias para probar operaciones matemáticas.
Vamos a generar el archivo para generar el cliente.
Vamos a crear una prueba para probar el hola mundo de nuestra app en Flask.
Vamos a deshabilitar el token de los formularios para realizar las pruebas unitarias.
Vamos a crear la prueba para crear una tarea.
Vamos a crear la prueba para actualizar una tarea.
Vamos a crear la prueba para el listado de las tareas.
Vamos a crear la prueba para eliminar una tarea.
Vamos a hablar sobre el resto de los módulos de tipo dashboard a probar.
Vamos a crear la prueba para el listado en la API de las tareas.
Vamos a crear la prueba para el detalle en la API de las tareas.
Vamos a crear la prueba para crear en la API de las tareas.
Vamos a crear la prueba para crear en la API de las tareas con el token requerido (autenticación requerida).
Vamos a crear la prueba para actualizar en la API de las tareas.
Vamos a crear la prueba para eliminar en la API de las tareas.
Presentamos el uso de los archivos estáticos en Flask.
Vamos a instalar Bootstrap CDN en el framework.
Vamos a implementar el contenedor para nuestra web.
Vamos a implementar una tabla para el listado.
Vamos a implementar el componente de carta.
Vamos a crear un menú de navbar para la app con su menú de hamburguesa de tipo colapsable.
Crearemos el componente de paginación para las tareas.
Vamos a implementar el componente de botones.
Vamos a implementar el componente de formulario.
Vamos a terminar algunas implementaciones sobre los formularios.
Vamos a crear un esquema para mostrar los errores de formulario.
Vamos a mostrar mensajes tipo flash mediante un componente de alerta.
Definiremos un estilo para la página de login y registro.
Vamos a usar clases de utilidades para personalizar el estilo de los componentes.
Vamos a crear un drowpdown para el usuario autenticado.
Vamos a mostrar un mensaje para saludar al usuario autenticado.
Vamos a usar el sistema de columnas de Bootstrap para organizar nuestro contenido en los formularios.
Vamos a crear una hoja de estilo personalizada.
Vamos a presentar el uso de Flask Babel para traducir la aplicación en múltiples idiomas.
Vamos a instalar y configurar flask babel en el proyecto.
Vamos a conocer como marcar los textos en los archivos py y html.
Vamos a marcar los textos en toda la aplicación.
Vamos a crear los archivos para generar la traducción a la aplicación.
Vamos a realizar algunas pruebas para verificar las traducciones.
Vamos a hablar de que en esta sección se va a emplear una copia del proyecto.
Vamos a hablar de cómo podemos almacenar resultados en caché.
Vamos a hablar de cómo puedes enviar correos electrónicos mediante Flask.
Vamos a conocer el plugin de Flask Debug Toolbar.
Vamos a conocer como generar datos de prueba.
Vamos a hablar sobre el plugin para crear comandos.
Vamos a crear los campos para el nombre, apellido e email.
Vamos a crear los campos y clases para las redes sociales.
Vamos a crear el campo y clase para las direcciones.
Vamos a crear el campo y clase para el idioma.
Vamos a crear la FK para el usuario en las tareas.
Vamos a crear el layout base y la vista para el perfil.
Vamos a crear el fragmento de template, formulario y controlador inicial.
Vamos a crear el proceso para las direcciones.
Vamos a adaptar los formularios actuales a un sistema de columnas de Bootstrap.
Vamos a crear el formulario para cambiar la contraseña.
Vamos a construir el listado inicial para las redes sociales.
Vamos a construir el listado inicial para las redes sociales.
Vamos a completar el proceso para crear y actualizar una red social.
Vamos a mostrar el detalle de la red social registrada en la BD.
Vamos a implementar la opción de eliminar.
Vamos a habilitar las validaciones a las redes sociales.
Vamos a realizar la carga del avatar para el usuario.
Vamos a mostrar el avatar del usuario en el template de perfil.
Vamos a implementar la opción para eliminar el avatar.
Vamos a crear el proceso administrativo para seleccionar el idioma.
Configuramos a nivel de la aplicación la verificación del idioma del usuario para establecer en la aplicación.
Vamos a hablar sobre todo el desarrollo que hemos llevado a cabo hasta este momento.
Vamos a asignar el identificador del usuario a la tarea al momento de la creación.
Vamos a presentar el esquema que vamos a seguir para el sistema de roles.
Vamos a crear la estructura para los roles.
Vamos a crear el usuario de ejemplo, los roles y la relación entre ambos.
Vamos a crear el decorador para verificar los roles del usuario e implementarlo en el primer controlador/vista.
Vamos a proteger los controladores para las tareas con los roles.
Vamos a verificar el tipo de rol desde el listado de tareas para obtener todas las tareas o las del usuario.
Vamos a ocultar las acciones que no pueda realizar el usuario mediante el template.
Vamos a dar una conclusión para el apartado de los roles.
Vamos a presentar los desarrollos que vamos a realizar en este apartado.
Vamos a aplicar el cambio en el modelo y base de datos.
Vamos a crear las funciones para generar y procesar el token.
Vamos a generar el token desde el registro de usuario.
Vamos a crear el controlador para verificar el usuario por el token.
Vamos a hablar sobre la verificación del usuario por email.
Vamos a conocer como crear un decorador para las vistas sin parámetros.
Vamos a conocer como crear un decorador para las vistas con parámetros.
Vamos a mostrar la configuración básica para emplear las variables de entorno mediante archivos y varios ejemplos.
Vamos a conocer como acceder a las variables de entorno.
Vamos a enseñar la estructura del proyecto. https://github.com/libredesarrollo/curso-libro-flask-blog/releases/tag/v0.0
Vamos a crear la página de index inicial.
Vamos a generar el resto de la data de prueba.
Vamos a crear algunos campos adicionales para la publicación.
Vamos a instalar B5 y crear la plantilla maestra.
Vamos a crear y popular el formulario de filtro.
Vamos a aprender a recibir los datos del formulario y armar la lógica condicional.
Vamos a crear el listado de publicaciones y filtrar los datos.
Vamos a crear un campo de selección para las etiquetas.
Vamos a crear un campo de selección múltiple para las etiquetas.
Vamos a implementar un enlace para limpiar el filtro.
Vamos a definir una categoría vacía.
Vamos a colocar los enlaces para filtrar desde las categorías y etiquetas desde el listado.
Vamos a habilitar la paginación.
Este es un curso bastante grande con muchos módulos de lo cual vamos de lo más básico a aspectos más avanzados....
Para tomar el curso lo único que necesitas es tener conocimientos básicos en la programación, no es indispensable saber Python ya que tenemos una sección de reforzamiento pero sí que conozcas aspectos de tecnologías web como HTML, CSS y un poco de JavaScript asi que hayas creado cualquier app.
Vamos a enseñar como podemos instalar Python y algunas consideraciones a tener en cuenta.
Vamos a crear la carpeta de nuestro proyecto que vamos a emplear en esta sección para realizar las distintas pruebas y conocer Python.
Vamos a instalar el IDE que vamos a emplear en este curso para desarrollar nuestras aplicaciones en Python y Flask.
En esta sección vamos a dar un repaso básico a Python; siéntete libre de saltar esta sección si consideraras que ya cuentes con dichos conocimientos y quieres ir a desarrollar de una tu primera aplicación en Django.
Vamos a conocer como podemos crear variables en Python.
Vamos a conocer los tipos de datos en Python; string, flotantes, enteros y booleanos.
Vamos a conocer el uso de los operadores matemáticos en Python.
Vamos a dar algunos datos extras sobre el string para contar longitudes, reemplazar ocurrencias etc.
Vamos a conocer otra característica interesante sobre los String que sería el formato para imprimir o concatenar distintos tipos de datos y dando como salida un String.
Vamos a presentar una estructura que nos permitirá guardar colecciones de enteros, string, etc en una variable.
Vamos a ver cómo podemos emplear los condicionales en Python.
Vamos a ver el uso de los ciclos for en python para iterar listas.
Vamos a conocer el uso de las funciones en Python, pase de parámetros y retornos de valores.
Vamos a crear nuestra primer clase, así como atributos métodos y constructores y crear una instancia de la misma.
Vamos a ver el uso de los tipos enumerados en Python para crear constantes.
Vamos a conocer la estructura llamada diccionario para crear estructuras de tipo clave valor.
Vamos a conocer cómo podemos manejar los errores en tiempo de ejecución en nuestra app.
Vamos a hablar un poco sobre Flask y conocer su ecosistema.
Vamos a hablar sobre el uso de los venv en nuestro curso.
Vamos a crear la primera aplica en Flask y explicar lo más básico de una app en Flask, en manejo de la ruta inicial y su función.
Vamos a presentar el sistema de gestor de paquetes de Python, pip y vamos a instalar Flask mediante pip.
Vamos a aprender a actualizar una versión de Flask mediante la terminal.
Vamos a presentar las dos formas en la que tenemos para ejecutar una app en Flask, mediante el comando de Python y de Flask.
Vamos a presentar el modo de desarrollador para habilitar la recarga de nuestro servidor cada vez que hagamos cambios en el código fuente.
Vamos a presentar el pase de parámetros mediante la URL a una app en Flask.
Vamos a imprimir un código HTML en vez de simple texto.
Vamos a aprender a organizar nuestra aplicación para que pueda tomar archivos estáticos con CSS, js, imágenes, etc.
Vamos a presentar el motor de templates de Flask conocido como Jinja2.
Vamos a aprender a crear una app que conste de varios módulos.
Vamos a presentar Blueprint para tener una app modular más organizada.
Vamos a aprender a realizar las configuraciones básicas y de la manera más sencilla en una app Flask.
Vamos a manejar las configuraciones básicas de la app mediante un archivo global.
Vamos a manejar las configuraciones básicas de la app mediante un archivo global y manejar distintos ambientes.
Vamos a crear la estructura base de la app que vamos a emplear en las siguientes secciones que será una app de almacén de productos.
Vamos a crear un modelo en Python con datos estáticos con los cuales podamos realizar un par de consultas.
Vamos a crear una vista o template para el listado de los productos y la función y ruta asociada a la misma.
Vamos a crear la vista o template para el detalle de un producto y la función con pase de parámetros y ruta a la misma.
Vamos a presentar los filtros en JinJa2, para realizar distintas operaciones de cómputo fácilmente desde la vista o template; vamos a conocer el filto default, para dar valores por defecto en caso de que un valor sea vacío o nulo.
Vamos a presentar los filtros en JinJa2, para realizar distintas operaciones de cómputo fácilmente desde la vista o template.
Vamos a conocer el filtro truncate, para cuando queramos cortar textos en tamaños determinados.
Vamos a conocer el filtro count, para contar la cantidad de caracteres de un String.
Vamos a conocer el filtro float, para convertir valores o textos a flotantes.
Vamos a conocer el filtro int, para convertir valores o textos a enteros.
Vamos a conocer el filtro round, para redondear valores flotantes.
Vamos a conocer el filtro join, para convertir un array a texto.
Vamos a conocer el filtro length, para determinar el tamaño de un array.
Vamos a conocer el filtro tojson, para convertir objetos a json.
Vamos a crear un filtro personalizado por nosotros en el módulo y global a nuestra app.
Vamos a crear el template base para nuestra aplicación en Jinja2
Vamos a conocer el uso de los condicionales en Jinja2.
Vamos a conocer el uso de la variable especial llamada loop en los for y sus variables.
Código fuente de la sección
Vamos a crear la configuración de la base de datos.
Vamos a crear nuestro primer modelo y estructura de la base de datos y crear la tabla asociada a la misma mediante Flask.
Vamos a aprender a obtener todos los registros de la tabla product, la que creamos en el vídeo anterior.
Vamos a definir la configuración de la base de datos en el archivo de configuración de nuestra app.
Vamos a aprender a obtener un registro de la base de datos.
Vamos a dar una introducción de las principales funciones para obtener registros de la base de datos.
Vamos a aprender a crear registros mediante Flask.
Vamos a aprender a actualizar registros mediante Flask.
Vamos a aprender a eliminar registros mediante Flask.
Vamos a crear la vista o el formulario para crear productos.
Vamos a crear la función que va a recibir los datos del formulario que envía nuestro usuario.
Vamos a crear una redirección para cuando creemos productos manda directamente a otra vista; por ejemplo, la vista de creación de productos.
Vamos a aprender a emplear los mensajes flash o la sesión flash para enviar mensajes a nuestro usuario.
Vamos a configurar la visualización de los mensajes flash mediante la vista.
Vamos ahora a desarrollar la funcionalidad para actualizar productos.
Vamos a presentar un paquete que nos permitirá tener un gran manejo y control sobre los formularios, que no tendremos que crearlos de manera manual si no mediante un modelo base.
Vamos a aprender a agregar reglas de validación a los formularios.
Vamos a crear una vista con solamente los campos de formulario que luego vamos a incluir en la vista de edición y creación de campos de formulario.
Vamos a crear todo el proceso para actualizar un producto existente mediante el WFT.
Vamos a implementar la funcionalidad para eliminar productos y con esto completamos nuestro CRUD.
Vamos a aprender a paginar registros y crear los enlaces de navegación.
Código fuente de la sección
Vamos a hacernos con nuestra copia de Bootstrap en su versión 4 e instalarlo en nuestra app Flask.
Vamos a configurar el layout de nuestra app, para que todo no aparezca tan estirado.
Vamos a mostrar los mensajes tipo flash por un componente de alert de Boostrap 4.
Vamos a personalizar el diseño de los formularios.
Vamos a crear un header con los componentes de navegación.
Vamos a definir un sencillo footer para nuestra app.
Vamos a aprender a crear macros en Flask, y el tema será un macro para la paginación de los registros.
Vamos a crear el diseño para los componentes del listado de productos de nuestra app.
Vamos a crear una hoja de estilo personalizada en donde definir el CSS de nuestra app.
Vamos a implementar un modal de confirmación para cuando queramos eliminar registros.
Vamos a instalar una iconografía para nuestra app.
Vamos a configurar los tooltips en la app, que son esos pequeños globos informativos.
Vamos a crear un modelo y la clase de formulario para las categorías.
Vamos a crear el CRUD para las categorías en base al que ya tenemos para los productos.
Vamos a crear las relaciones entre las tablas de productos y categorías.
Vamos a colocar el listado de categorías en el formulario de creación de los productos.
Vamos a crear una relación de uno a muchos en Flask con SQLAlchemy.
Vamos a crear una relación de muchos a uno en Flask con SQLAlchemy.
Vamos a aplicar los cambios en la base de datos.
Vamos a imprimir la categoría de un producto en el listado.
Código fuente de la sección
Introducción
Vamos a crear un módulo aparte en nuestra app para manejar la autenticación y registro de nuestro usuario.
Vamos a crear un nuevo modelo para el usuario y vamos a crear un tipo enumerado para manejar el tipo de usuario.
Vamos a crear un formulario para registrar usuarios.
Vamos a crear una función en nuestro controlador y vista para registrar.
Vamos a verificar si un usuario existe al momento del registro y dar el error correspondiente.
Vamos a crear la funcionalidad para realizar el login de un usuario y construcción de la sesión del usuario.
Vamos a crear el cerrado de la sesión del usuario.
Vamos a estudiar un poco cómo está conformado el objeto de la sección y verificar si un usuario está o no autenticado.
Vamos a colocar un campo para confirmar la contraseña de un usuario.
Vamos a definir las opciones de usuario en el navbar.
Vamos a instalar y configurar un nuevo módulo que sería para automatizar el login y manejo del usuario.
Vamos a instalar un paquete para la autenticación en Flask; que nos facilitará ciertos procesos y funcionalidades al momento de crear un módulo de login.
Vamos a emplear un decorador que nos permitirá proteger el módulo de CRUD con login.
Vamos a realizar unos sencillos cambios para recibir el parámetro de next que es completamente opcional y que vamos a emplear para hacer las redirecciones a la vista que intentó ingresar a nuestro usuario antes de estar autenticado.
Vamos a inyectar el código JavaScript de la ruta next en el formulario que será enviado por post.
Vamos a proteger el módulo crud para que solamente pueda ser accedido mediante el login.
Vamos a crear un decorador, para extender las funcionalidades que nos ofrece el Flask Login y crear un sencillo sistema de rol.
Vamos a actualizar el diseño del formulario de login para nuestra app
Código fuente de la sección
Vamos a explicar que es una Rest Api, para que sirve y cómo va a estar compuesta la misma en un proyecto en Flask; también vamos a crear un nuevo módulo para la Api Rest.
Vamos a crear el esquema para nuestra Rest Api, declarar la clase y un método para hacer las primeras pruebas y crear las rutas.
Vamos a aprender a retornar una respuesta de tipo json mediante el método get.
Vamos a definir todos los métodos Rest que vamos a emplear en nuestra Rest Api.
Vamos a implementar en nuestra Rest Api obtener el detalle de un registro.
Vamos a instalar un software esencial para poder realizar peticiones a nuestra Rest Api.
Vamos a validar los datos que recibimos por parte de nuestro usuario por el Post.
Vamos a crear el producto una vez validada la data.
Vamos a aprender a crear un esquema básico que podremos utilizar a lo largo de nuestra app para devolver las respuesta en base a un mismo formato.
Vamos a implementar la eliminación de un producto mediante nuestra Rest Api.
Vamos a implementar la actualización un producto que es una copia de los dos métodos que vimos anteriormente.
Vamos a implementar una Rest Api para tener un listado de categorías.
Código fuente de la sección
Vamos a comoenzar a crear un proyecto en #Vue 3 con Vue CLI 0:00 Usando VSC con Vue 2:50 Estructura de un proyecto en Vue
Vamos a instalar trabajar con los CORS en Flask y poder consumir una Rest Api creada en este framework desde Vue. Este video forma parte de mi curso completo!
Crear un listado de productos
Componente para crear productos
Enviar peticiones fetch desde vue mediante FormData a la Rest Api
Eventos personalizados entre componentes
Comunicación entre el componente padre al hijo
Editar un producto
Detalle de un producto, fetch
Detalle de un producto, referencia
Eliminar un producto
Vamos a introducir un poco Vue para el desarrollo de webs modernas y realizar la instalación del mismo en nuestro proyecto.
Vamos a crear un módulo para trabajar con la app en Vue y hacer el hola mundo.
Vamos a crear un método que imprima un mensaje por consola en base a un evento click de nuestro usuario.
Vamos a presentar los fetch, como mecanismo para conectarnos mediante HTTP y conseguir datos de manera asíncrona.
Vamos a presentar los ciclos, para iterar elementos.
Vamos a ver el uso de los condicionales en Vue.
Vamos a crear un componente, como elemento fundamental para modularizar nuestra app.
Vamos a mover nuestra instancia de Vue en un archivo aparte para modularizar nuestra app.
Vamos a conocer el ciclo de vida de una app en Vue para automatizar procesos una vez que la app de Vue esté cargada.
Vamos a crear un componente que permitirá borrar un producto mediante un modal.
Vamos a aprender a pasar datos entre componentes; específicamente el ID del producto a eliminar.
Vamos a aprender a como podemos observar cambios en propiedades y realizar alguna acción.
Vamos a reparar un problema que ocurre cuando intentamos seleccionar múltiples veces el mismo producto, que el modal no aparece por segunda vez.
Vamos a personalizar el modal para borrar con datos del producto seleccionado.
Vamos a aprender a borrar productos mediante el fetch.
Vamos a crear un evento para notificar al listado que el producto fue eliminado.
Vamos a colocar un índice al for del listado para que sepamos cual producto vamos a eliminar.
Vamos a crear un componente que nos permitirá crear un nuevo producto.
Vamos a seguir trabajando sobre nuestro modal para crear un producto y vamos a presentar los v-model de Vue para asignar una propiedad a un campo de formulario.
Vamos a realizar la petición fetch para crear el producto
Ahora que ya tenemos nuestro producto editado, tenemos que refrescar los cambios en el listado.
Vamos a realizar una sencilla comparación desde el then del fetch para detectar si la respuesta es de código 200 u otro código.
Vamos a mostrar los mensajes de errores por el modal.
Vamos a construir el listado de categorías ahora con la Rest Api.
Código fuente de la sección
Vamos a aprender cómo puedes crear páginas personalizadas para mostrar los errores en tu app.
Vamos a conocer el comando de freeze para obtener todos los módulos que tengamos instalado en nuestro equipo mediante pip.
Vamos a conocer el uso de los ambientes virtuales para crear un espacio aislado de nuestra computadora para realizar las pruebas.
Vamos a crear los campos en el modelo y la base de datos además de definir las validaciones de los formularios así como los campos del mismo para la carga de archivos.
Vamos a definir una regla para los archivos permitidos así como configurar el path para la carga de archivos.
Vamos a aprender a validar la extensión de los archivos a cargar y procesar.
Vamos a hacer el proceso para la carga del archivo, procesamiento y guardado del mismo en nuestra app.
Vamos a mostrar cómo puedes configurar la carga de archivos de manera opcional.
Vamos a aprender el uso de la protección de los CSRF para los formularios empleando Form-wft.
Vamos a aprender a a definir valores por defecto en la URL.
Vamos a aprender a emplear las categorías que las podemos configurar en el uso de los mensajes flash de manera opcional.
Vamos a componer la vista de _alert, la cual muestra todos los mensajes de la aplicación, incluido los de formulario, vamos a corregir el despliegue de los errores de formulario.
Vamos a aprender a mostrar los errores del formulario de manera individual.
Vamos a aprender a proteger la RestApi que construimos anteriormente para que solamente pueda ser consumida si el usuario dispone de una pareja de usuario y contraseña.
Vamos a aprender a crear validaciones personalizadas para los campos de formularios.
Vamos a aprender a pasar parámetros para personalizar las validaciones personalizadas para los formularios.
Vamos a corregir el problema de que no podemos modificar una categoría con el mismo nombre.
Vamos a ver algunas configuraciones extra que podemos hacer a los formularios mediante el WTForm.
Vamos a aprender a crear formularios compuestos, definiendo un formulario dentro de otro.
Vamos a construir un campo de formulario base que luego podemos reutilizar, un esquema similar al vídeo anterior.
Vamos a aprender a crear campos de formulario de manera dinámica.
Vamos a aprender a borrar campos de formulario de manera dinámica.
Vamos a configurar Google Recaptcha con un proyecto en Flask.
Vamos a hablar sobre la conexión https para que no ocurra una posible excepción con el Google Recaptha.
Vamos a aprender a pasar datos de un formulario a un objeto de una clase.
Vamos a conocer un paquete para manejar Bootstrap en su versión 3 y 4.
Vamos a aprender a enviar emails mediante Flask.
Vamos a aprender a trabajar con versionamientos en nuestra base de datos mediante este paquete
Vamos a aprender a traducir nuestras aplicaciones con este módulo para Flask.
Vamos a conocer este interesante módulo para crear CRUD automáticos dado un modelo.
Vamos a aprender a configurar modales para los procesos de crear y actualizar.
Vamos a aprender a configurar opciones de búsqueda, filtro y exportación.
Vamos a crear un campo de tipo fecha para conocer cómo se comporta el Flask Admin.
Vamos a aprender a fijar valores estáticos en los campos de texto.
Vamos a aprender a crear reglas de validaciones en los campos de formulario.
Vamos a aprender a personalizar o procesar los datos del usuario antes y después de guardar.
Vamos a conocer como podemos obtener una instancia del formulario que vamos a editar o crear para personalizar el mismo.
Vamos a aplicar los cambios para que el CRUD de Flask Admin sea empleado también para los productos y categorías.
Vamos a aprender a cómo podemos personalizar el template de Flask Admin.
Vamos a personalizar el template de listado del Flask Admin.
Vamos a instalar una versión de un tercero de Flask Admin con Bootstrap 4.
Vamos a proteger el módulo que construimos con Flask Admin con loguin empleando Flask Login.
Este módulo permite administrar los usuarios mediante la creación de vistas para login, registro, manejo de roles, envío de emails de confirmación etc.
Vamos a conocer este módulo para crear Rest Api fácilmente y rápidamente.
Vamos a conocer como podemos hacer las operaciones para crear, actualizar y borrar empleando este módulo.
Vamos a aprender a emplear el query search para realizar consultas.
Vamos a aprender guardar caché de las páginas así como del llamado a funciones en Flask mediante un módulo.
Vamos a aprender a mostrar un toolbar con información de debug de nuestra app.
Vamos a empezar las configuraciones iniciales en nuestro proyecto para adaptarlo con el Módulo Flask User.
Vamos a hacer cambios en la base de datos, pero ahora vamos a hacerlo empleando el paquete de Flask Migrate.
Vamos a empezar a hacer algunos cambios al tener deshabilitado el módulo de usuario que creamos anteriormente por el de Flask User.
Vamos a seguir con los cambios de enlaces en nuestra app.
Vamos a enseñar cómo podemos permitir la verificación del usuario registrado por email.
Vamos a aprender a cómo podemos personalizar vistas de Flask User.
Vamos a personalizar la vista base de Flask User.
Vamos a personalizar la vista de login de Flask User.
Vamos a personalizar la vista de register/registro de Flask User.
Vamos a personalizar la clase de los errores de formulario de Flask User.
Vamos a personalizar la página para cambiar la contraseña del usuario.
Vamos a incorporar el sistema de roles con el cual cuenta Flask User.
Vamos a cargar de manera manual algunos datos iniciales en la base de datos.
Vamos a proteger el dashboard con el decorador que nos ofrece Flask User.
Vamos a crear un usuario superadministrador en la base de datos.
Vamos a hacer algunas pruebas con un usuario superadmin con rol de admin para ingresar a nuestro dashboard.
Vamos a proteger el módulo de dashboard con el rol de admin y el superadmin.
Vamos a conocer los signals de Flask User para manejar eventos del usuario.
Vamos a emplear el signals para los eventos registrados para otorgar un rol por defecto cuando se registre un usuario en nuestra app.
Vamos a conocer los tipos de formularios que podemos emplear en Flask User.
Vamos a definir un controlador para manejar el formulario para el usuario a registrar.
Vamos a personalizar el formulario de registro con un nuevo campo.
Vamos a crear el constructor del modelo de Usuarios.
Vamos a crear el usuario, para eso vamos a terminar de adaptar el método del controlador.
Vamos a convertir en un hash nuestra contraseña.
Vamos a asignar los roles al usuario al momento de creación.
Vamos a construir la base del listado de usuarios.
Vamos a ver una variante más limpia pero más abstracta del join que vimos anteriormente.
Vamos a habilitar la paginación de registros.
Vamos a actualizar un usuario, específicamente el username.
Vamos a crear una validación personalizada y una clase personalizada para cambiar el Username.
Vamos a desarrollar la función para borrar un usuario.
Vamos a establecer la opción del CRUD de admins solamente para el Rol del Superadmin.
Vamos a escoger un tema o template para el dashboard para nuestra app.
Vamos a instalar el template en nuestra app para dejar lo básico funcional.
Vamos a configurar el header para el nuevo template.
Vamos a configurar el navbar para del nuevo template.
Vamos a configurar el footer para del nuevo template.
Vamos a configurar el listado de las cartas de los usuario para el nuevo template.
Vamos a variar un poco el diseño para adaptarlo al template.
Vamos a colocar una cabecera a los formularios que resume la acción a realizar.
Vamos a ver una demostración de cómo podemos sobrescribir CSS de nuestro template.
Vamos a colocar los enlaces de paginación en el centro.
Vamos a crear un template base para el módulo de usuario/flask_user
Vamos a crear un nuevo módulo para trabajar con la sección de facturación.
Vamos a hacer algunos cambios para que desde nuestro admin o superadmin podamos crear usuarios regulares o admin respectivamente.
Vamos a crear un enlace en el seader para los usuarios de tipo Regular y para ir al módulo de facturación.
Vamos a diseñar un campo de filtro o búsqueda por el nombre; vamos a construir el HTML.
Vamos a crear el filtro desde el controlador.
Vamos a construir un listado desde la vista con los productos obtenidos mediante la búsqueda.
Vamos a crear un sencillo formulario para más adelante hacer las ventas o facturación.
Vamos a construir el listado de productos vía json.
Vamos a crear un fetch para poder consumir el listado de productos.
Vamos a crear la estructura que vamos a emplear para poder consumir los productos vía json y mostrarlos en un listado de manera asíncrona.
Vamos a crear un listado a partir del json consumido vía fetch.
Vamos los productos seleccionadas por nuestro usuario y hacer unas validaciones a partir de los mismos.
Vamos a definir la petición vía fetch.
Vamos a crear la tabla/modelo para registrar las ventas.
Ahora vamos a crear la tabla/modelo para registrar los productos de las ventas.
Vamos a desarrollar el método de sell para hacer una venta y registrarla en la bd.
Vamos a crear un formulario base en Flask para los ventas.
Vamos a agregar las validaciones en el formulario y procesar el el Post ajax mediante el formulario que creamos anteriormente.
Vamos a validar los identificadores de los productos.
Vamos a configurar el token csrf para proteger nuestra petición.
Vamos a configurar un modal para mostrar los mensajes del servidor.
Vamos a mostrar los mensajes del servidor.
Vamos a hacer una sencilla validación para variar un poco el estilo dependiendo del código.
Vamos a crear el listado de ventas realizadas.
Vamos a aprender a imprimir un sencillo pdf desde una página HTML.
Vamos a aprender a imprimir un sencillo pdf desde una página HTML.
Vamos a crear una página HTML que luego vamos a usar como fuente para generar un PDF.
Vamos a crear una página HTML que luego vamos a usar como fuente para generar un PDF.
Vamos a crear una página HTML que luego vamos a usar como fuente para generar un PDF.
Vamos a aprender a descargar el PDF que generamos anteriormente.
Introducción
Vamos a renombrar el controlador de product para darle un mejor nombrado para nuestra app.
Vamos a definir una URL base para el controlador de productos.
Vamos a crear un solo modelo global en toda nuestra app.
Vamos a instalar un paquete para crear la Rest Api.
Vamos a crear una Api Rest mínima.
Vamos a crear una Api Rest para las categorías.
Vamos a crear un método de uso global para comprobar si la categoría existe.
Vamos a crear un método para pasar una categoría a un diccionario.
Vamos a crear el primer recurso tipo rest para obtener el detalle de una categoría dado el ID.
Vamos a crear un recurso Rest para obtener todas las categorías.
Vamos a crear una categoría desde un recurso.
Vamos a deshabilitar la protección CSRF para la Rest Api.
Vamos a actualizar una categoría desde un recurso.
Vamos a borrar una categoría desde un recurso.
Vamos a especificar mediante el Request parsing de este paquete, cuales son los parámetros con los cuales vamos a trabajar, así como una sencillas validaciones para que puedan ser consumidas mediante nuestra app en vez de emplear el request.form.
Vamos a trabajar con el casteo de salida para emplear una estructura provista por el paquete.
Vamos a obtener un listado paginado desde la Rest y para esto vamos a crear un método personalizado en la Rest.
Vamos a aprender a proteger nuestra Rest Api con usuario y contraseña.
Vamos a aprender a proteger nuestra Rest Api con el sistema de FlaskUser.
Vamos a instalar un paquete para habilitar un SSL.<br /> <br /> openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 365
Vamos a instalar el proveedor que nos permitirá emplear el login social.
Vamos a obtener la clave y clave secreta del portal de desarrolladores de Facebook para poder adaptar el login social.
Vamos a conseguir el login social (obtener datos del usuario de fb) mediante las configuraciones y pasos anteriores.
Vamos a obtener la clave y clave secreta del portal de desarrolladores de Google para poder adaptar el login social.
Vamos a conseguir el login social (obtener datos del usuario de google) mediante las configuraciones y pasos anteriores.
Vamos a obtener la clave y clave secreta del portal de desarrolladores de Twitter para poder adaptar el login social.
Vamos a conseguir el login social (obtener datos del usuario de Twitter) mediante las configuraciones y pasos anteriores.
Vamos a crear un proyecto base para la nueva sección.
Explicaremos el funcionamiento básico de la comunicación full duplex SocketIO.
Vamos a crear una página HTML de ejemplo para poder trabajar con el cliente de SocketIO en los siguiente videos.
Vamos a realizar y explicar el uso de SocketIO en el servidor.
Vamos a realizar la comunicación de SocketIO desde el cliente al servidor.
Vamos a conocer un mecanismo para comunicar a varios clientes y crear habitaciones.
Vamos a practicar un poco más con el pase de argumentos al emitir eventos.
Vamos a crear el formulario para enviar mensajes desde el cliente.
Vamos a listar los mensajes desde la página web.
Vamos a limpiar el textarea cuando enviemos un mensaje.
Vamos a inyectar en el mensaje de nuestro usuario la fecha de creación.
Vamos a hacer una demo y pasar información sobre la persona.
Vamos a crear una estructura más modular para la app, en el esquema de MVC.
Vamos a crear un archivo de configuración.
Vamos a instalar y configurar Flask Migrate y SQAlchemy.
Vamos a instalar Flask login, crear un formulario y registrar un usuario.
Vamos a instalar Flask login, crear un formulario y el login de un usuario.
Vamos a implementar la opción de cerrar sesión.
Vamos a definir las opciones para proteger algunas rutas en la app de chat.
Vamos a colocar parte de la información del usuario autenticado en el mensaje.
Vamos a crear un modelo para manejar los mensajes de tipo room.
Vamos a guardar los mensajes en la base de datos.
Vamos a componer la respuesta del servidor para devolver el mensaje de la base de datos.
Vamos a mostrar los mensajes de la habitación en la web.
Vamos a hacer algunos cambios para que podamos crear mensajes y habitaciones.
Vamos a duplicar la app de chat.
Vamos a presentar el esquema de habitaciones de Flask Socket IO.
Vamos a crear un esquema en el cual nos podamos mover por varias habitaciones.
Veremos cómo podemos conocer cuando se conectan o desconectan usuarios mediante eventos.
Vamos a guardar en la sesión en que habitación estamos registrados.
Vamos a enviar mensajes a un canal/room por vez.
Vamos a explicar el uso de los namespace para crear conexiones independientes.
Veremos una variante del decorador para definir nuestros sockets.
Vamos a aprender a manejar los errores o excepciones que pueden ocurrir en los sockets.
- Andrés Cruz
Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter
Acepto recibir anuncios de interes sobre este Blog.
!Cursos desde!
10$
En Udemy
Quedan 4d 12:54!
!Cursos desde!
4$
En Academia
Ver los cursos!Libros desde!
1$
Ver los libros