Índice de contenido
- De Principiante a Senior: La Verdad Sobre Aprender Flask 3
- ¿Por qué Flask 3 es el Motor de las Aplicaciones Flexibles?
- Flask no es solo un microframework: es el control total
- Tabla de Decisión: ¿Qué framework dominar en Python?
- El "Enfoque Pro": Código Limpio vs Código Tradicional
- Tu Ruta de Aprendizaje: Maestría en Arquitecturas Python
- Fases del Curso Garantizadas:
- Recursos Gratuitos para Empezar AHORA
- Libro y Curso Comunitario Gratis
- Repositorios del Proyecto
- Prueba la Aplicación Demo
- ¿Por qué aprender Flask 3 hoy? (y qué lo hace tan poderoso)
- Productividad y Flexibilidad Real
- Flask 3 en el Mercado Laboral
- ¿Qué vas a aprender y para quién es este curso?
- Temario del Curso y Libro
- Integrar Flask 3 con Vue 3 y Bootstrap 5
- Ventajas Únicas de esta Formación
- Experiencia del Autor en el Mundo Real
- Preguntas Frecuentes
- 1. Introducción
- 2. Realizar preguntas
- 1. Introducción
- 2. Software necesario
- 3. Verificar el comando de acceso a Python 3 y Pip.
- 4. Preparar el entorno
- 5. Comandos básicos
- 6. Hola Mundo
- 7. Seleccionar el intérprete de Python en VSC
- 8. Modos de configuraciones
- 9. Características principales de Flask
- 10. Creando una aplicación modular: Presentación
- 11. Creando una aplicación modular: Crear el esquema
- 12. Creando una aplicación modular: Configuración
- 13. Creando una aplicación modular: Controladores
- 14. Tipos de rutas y parámetros
- 15. Publicar en github
- 1. Introducción
- 2. Consola interactiva/consola de Python
- 3. Archivos de Python
- 4. Variables y tipo de datos
- 5. Operaciones matemáticas
- 6. Concatenación de String
- 7. Casteos
- 8. Listas
- 9. Condicionales
- 10. Ciclos
- 11. Funciones
- 12. Funciones parte 2
- 13. Diccionarios
- 14. Clases, Primeros pasos
- 15. Clases, Primeras clases
- 16. Clases, Método constructor
- 17. Clases, Herencia
- 18. Módulos en Python, Primeros pasos
- 19. Módulos en Python, Ejercicio
- 1. Introducción
- 2. Sobre Jinja 2
- 3. Configurar Jinja en Flask
- 4. Primeras pruebas con los templates
- 5. Primeras pruebas con los templates, parámetros vía GET
- 6. Bloques de control: Condicionales
- 7. Bloques de control: Ciclo for
- 8. Filtros: Presentación
- 9. Filtro default
- 10. Filtro escape
- 11. Filtro conversion
- 12. Filtro max y min
- 13. Filtro round
- 14. Filtro replace
- 15. Filtro join
- 16. Filtro lower y upper
- 17. Filtro reverse
- 18. Filtro length
- 19. Filtro sort
- 20. Filtro slice
- 21. Establecer variables
- 22. Bloque
- 23. Bloque raw
- 24. Bloque macro
- 25. Templates
- 26. Herencia en los templates
- 27. Listado de tareas
- 28. Crear tarea
- 29. Actualizar tarea
- 30. url_for, rutas con nombre
- 31. Redirecciones
- 32. Eliminar tarea
- 33. Publicar en github
- 34. Clases basadas en vistas - Presentación
- 35. Clases basadas en vistas - Implementación
- 36. Extra: Filtros personalizados
- 1. Presentacion
- 2. Instalar dependencias
- 3. Configurar conexión
- 4. Modelos (tablas) de la base de datos
- 5. Crear tabla y pruebas
- 6. Operaciones a la base de datos
- 7. Probar operaciones
- 8. Publicar en Github
- 1. Introducción
- 2. Sobre Flask Migrate
- 3. Instalar dependencia
- 4. Configurar
- 5. Problemas con el comando Flask db
- 6. Comandos claves
- 7. Generar migraciones
- 8. Aplicar migraciones en la base de datos
- 9. Más comandos
- 10. Publicar en github
- 1. Introducción
- 2. Presentación
- 3. Instalar dependencia
- 4. Principales campos y validaciones
- 5. Crear la primera clase formulario
- 6. Instanciar y usar el formulario desde el template
- 7. Proceso de actualizar
- 8. Reutilizar formulario
- 9. Proceso de listado
- 10. Proceso de eliminar
- 11. Upload de archivos: Configuración inicial
- 12. Upload de archivos: Crear proceso
- 13. Publicar en Github
- 1. Introducción
- 2. Presentación
- 3. Uno a uno: Formularios y procesos
- 4. Uno a uno: Formularios y procesos
- 5. Ver el documento de una tarea
- 6. Eliminar el documento de una tarea
- 7. Relaciones de tipo uno a muchos: Modelos y base de datos
- 8. Relaciones de tipo uno a muchos: Formularios y procesos
- 9. Relaciones de tipo muchos a muchos: Modelos y base de datos
- 10. Relaciones de tipo muchos a muchos: Asignar una etiqueta
- 11. Relaciones de tipo muchos a muchos: Remover una etiqueta
- 12. Publicar en github
- 1. Introducción
- 2. Mensajes flash
- 3. Categorías: Filtros
- 4. Categorías: Por tipo
- 5. Publicar en github
- 6. Extra: Sesión
- 1. Introducción
- 2. Instalar dependencia
- 3. Configuración básica
- 4. Crear formularios
- 5. Configuraciones adicionales
- 6. Registrar usuarios
- 7. Login de usuarios
- 8. Proteger rutas
- 9. Logout
- 10. Logout
- 11. Publicar en github
- 1. Introducción
- 2. Presentación
- 3. Instalar dependencia
- 4. Crear la primera Api Rest
- 5. Implementar recursos para la tarea: GET
- 6. Postman
- 7. Paquete requests
- 8. Serializar respuestas: mediante el modelo
- 9. Serializar respuestas: mediante el decorador marshal_with
- 10. Implementar recursos para la tarea: Create
- 11. Implementar recursos para la tarea: Update
- 12. Implementar recursos para la tarea: Delete
- 13. Parámetros del request, parsing y validaciones, presentación
- 14. Parámetros del request, parsing y validaciones, definición
- 15. Parámetros del request, parsing y validaciones, implementar
- 16. Otros recursos, paginación
- 17. Tarea: API para las categorías
- 18. Tarea: API para las etiquetas
- 19. Carga de archivos: request
- 20. Carga de archivos: reqparse
- 21. Retornar las etiquetas en el listado de tareas
- 22. Autenticación: Presentación
- 23. Autenticación: Instalar paquete
- 24. Autenticación: Generar token
- 25. Proteger y acceder a la Rest API protegida
- 26. Obtener la identidad del token
- 27. Tiempo de expiración del token
- 28. Pruebas a la API: requests
- 29. Pruebas a la API: requests, GET
- 30. Pruebas a la API: requests, GET protegida
- 31. Pruebas a la API: requests, POST
- 32. Pruebas a la API: requests, PUT
- 33. Pruebas a la API: requests, DELETE
- 34. Publicar en github
- 1. Introducción
- 2. ¿Por qué hacer pruebas?
- 3. Instalar dependencia
- 4. Creando las primeras pruebas unitarias
- 5. conftest.py, generar un cliente para las pruebas
- 6. Pruebas unitarias para el Hola Mundo
- 7. Pruebas para el módulo de dashboard: Configuración base
- 8. Pruebas para el módulo de dashboard: Crear
- 9. Pruebas para el módulo de dashboard: Actualizar
- 10. Detalle al importar el app
- 11. Pruebas para el módulo de dashboard: Listado
- 12. Pruebas para el módulo de dashboard: Eliminar
- 13. Resto de los módulos dashboard
- 14. Login requerido
- 15. Pruebas para la Api Restful: Listado
- 16. Pruebas para la Api Restful: Detalle
- 17. Pruebas para la Api Restful: Crear
- 18. Pruebas para la Api Restful: Crear, token autorización
- 19. Pruebas para la Api Restful: Actualizar
- 20. Pruebas para la Api Restful: Eliminar
- 21. Conclusiones
- 22. Publicar en github
- 1. Introducción
- 2. Presentación
- 3. Archivos estáticos
- 4. Instalar Bootstrap
- 5. Bootstrap, Container
- 6. Bootstrap, Tabla
- 7. Bootstrap, Carta
- 8. Menú de navegación
- 9. Paginación
- 10. Botones
- 11. Formularios
- 12. Formularios parte 2
- 13. Errores de formulario
- 14. Mensajes de confirmación
- 15. Login y registro
- 16. Detalles finales: Clases de utilidades
- 17. Crear drowpdown para el usuario
- 18. Drowpdown: Mostrar información del usuario
- 19. Sistema de columnas para los formularios
- 20. Estilo personalizado
- 21. Publicar en github
- 1. Introducción
- 2. Presentación
- 3. Instalación y configuración básica
- 4. Marcar los textos a traducir, primeras pruebas
- 5. Marcar los textos a traducir de la aplicación
- 6. Generar archivos de traducción y traducir la app
- 7. Pruebas en la aplicación
- 8. Publicar en Github
- 1. Introducción
- 2. Opcional: Duplicar proyecto
- 3. Flask Caching
- 4. Flask Mail
- 5. Flask Debug Toolbar
- 6. Flask Seeder
- 7. Flask CLI
- 1. Introducción
- 2. Modificar modelo de usuarios: Datos básicos
- 3. Modificar modelo de usuarios: Redes sociales
- 4. Modificar modelo de usuarios: Dirección
- 5. Modificar modelo de usuarios: Idiomas
- 6. Modificar modelo de usuarios: Tareas del usuario
- 7. Perfil de usuario: Estructura base
- 8. Perfil de usuario: Nombre, apellido e email, parte 1
- 9. Perfil de usuario: Nombre, apellido e email, parte 2
- 10. Perfil de usuario: Direcciones
- 11. Sistema de columnas para los formularios
- 12. Perfil de usuario: Cambiar la contraseña
- 13. Perfil de usuario: Redes sociales: Listado inicial
- 14. Perfil de usuario: Redes sociales: Listado inicial
- 15. Perfil de usuario: Redes sociales: Proceso de creación y actualización
- 16. Perfil de usuario: Redes sociales: Mostrar detalle en el form
- 17. Perfil de usuario: Redes sociales: Eliminar
- 18. Perfil de usuario: Redes sociales: Validaciones
- 19. Avatar: Upload de archivos
- 20. Avatar: Mostrar
- 21. Avatar: Eliminar
- 22. Perfil de usuario: Seleccionar idioma
- 23. Cambiar el idioma de la aplicación desde el usuario
- 24. Conclusión
- 25. Tareas del usuario
- 26. Roles: Presentación
- 27. Roles: Modelos, migraciones y tablas
- 28. Roles: Data de ejemplo
- 29. Roles: Crear decorador para validar roles
- 30. Roles: Implementar en el resto de los controladores
- 31. Roles: Verificar rol de ADMIN o EDITOR
- 32. Roles: Ocultar enlaces si el usuario no tiene el rol
- 33. Conclusiones
- 34. Verificar usuario por email: Presentación
- 35. Verificar usuario por email: Cambios en el modelo
- 36. Verificar usuario por email: Token
- 37. Verificar usuario por email: Cambios en el registro
- 38. Verificar usuario por email: Controlador para verificar el token
- 39. Verificar usuario por email: Email (demo)
- 40. Publicar en Github
- 1. Introducción
- 2. Decoradores sin parámetros
- 3. Decoradores con parámetros
- 1. Configuración básica
- 2. Acceder a las variables de entorno desde el proyecto
- 1. Programación en la Era de la IA: Hacia un Desarrollo Inteligente y refactorización a Service Layer
- 2. Extensiones
- 3. Flask Socket IO desde cero, comunicación Full Duplex Cliente y Servidor
- 1. Introducción
- 2. Estructura del proyecto
- 3. Crear página de index para el blog
- 4. Flask Seeder: Generar datos de prueba para los posts
- 5. Campos adicionales para la publicación
- 6. Configurar Bootstrap 5 y plantilla maestra
- 7. Crear formulario
- 8. Obtener datos del formulario y armar lógica filtros
- 9. Crear listado y filtrar por post y categoría
- 10. Filtro para el listado por etiquetas
- 11. Select múltiple para las etiquetas
- 12. Limpiar filtro
- 13. Categoría vacía
- 14. Crear enlaces para filtros de etiquetas y categorías
- 15. Paginado
- 1. Introducción
- 2. Estructura del curso
- 3. Requisitos para tomar el curso
- 4. Instalar Python
- 5. Configurar nuestro Editor
- 6. Instalar Visual Studio Code
- 1. Sobre la sección
- 2. Variables
- 3. Tipos de datos
- 4. Operadores
- 5. Más datos sobre el String
- 6. String Format (Formato de los String)
- 7. Listas
- 8. Condicionales
- 9. For Python
- 10. Funciones
- 11. Clases
- 12. Enums
- 13. Diccionarios
- 14. Try except: errores y excepciones
- 1. Introducción
- 2. Sobre Flask
- 3. Sobre los ambientes virtuales de Python y el curso
- 4. Nuestra primera aplicación
- 5. Presentación de la pip e Instalar Flask mediante la pip
- 6. Versión actual de flask y actualizar
- 7. Python app.py vs flask run
- 8. Modo desarrollo para activar la recarga (reload)
- 9. Pase de datos y valor por defecto
- 10. Imprimir nuestro primer código HTML
- 11. Organizando archivos estáticos
- 12. render_template para renderizar templates con Jinja2
- 13. Creando una aplicación modular
- 14. Introducción a Blueprint para crear apps modulares
- 15. Manejando configuraciones básicas
- 16. Manejando las configuraciones en archivos de configuración: from_pyfile
- 17. Manejando las configuraciones en archivos de configuración: from_object
- 18. ¿Qué hemos aprendido?
- 1. Introducción y que vamos a aprender
- 2. Creando una app para manejar productos: Estructura básica
- 3. Consultar datos de un modelo (diccionario) con datos estáticos
- 4. Definiendo el template para el listado y el método
- 5. Definiendo el template para el detalle y el método
- 6. Los filtros en Jinja2: default, para dar valores por defecto
- 7. Los filtros en Jinja2: safe, para imprimir código HTML
- 8. Los filtros en Jinja2: truncate, para cortar textos
- 9. Los filtros en Jinja2: count, para contar longitud de textos
- 10. Los filtros en Jinja2: float, para convertir valores a flotantes
- 11. Los filtros en Jinja2: int, para convertir valores a enteros
- 12. Los filtros en Jinja2: round, para redondear números flotantes
- 13. Los filtros en Jinja2: join, para convertir array a texto
- 14. Los filtros en Jinja2: length, para contar la cantidad de elementos de un array
- 15. Los filtros en Jinja2: tojson, para convertir objetos a json
- 16. Crear un filtro personalizado para calcular el iva en JinJa2
- 17. Jinja2: Crear un template base para nuestro módulo
- 18. Jinja2: Condicionales
- 19. Jinja2: Variable loop en los for
- 20. Código fuente de la sección
- 1. Introducción y que vamos a aprender
- 2. Crear la conexión y configuración a la base de datos
- 3. Crear el modelo de productos
- 4. Obteniendo todos los registros de la tabla product
- 5. Definir la configuración de la base de datos en el archivo de configuración.
- 6. Obtener un registro
- 7. SQLAlchemy: Introducción a las operaciones de consulta a la base de datos
- 8. SQLAlchemy: Crear registros
- 9. SQLAlchemy: Actualizar registros
- 10. SQLAlchemy: Borrar registros
- 11. Crear vista de formulario para crear productos
- 12. Crear función en Flask para procesar el formulario y guardar producto
- 13. Realizar una redirección al formulario de creación de productos
- 14. Crear mensajes flash
- 15. Configurar mensaje flash en vista
- 16. Funciones y vista para actualizar formulario
- 17. Crear un formulario con Flask WFT
- 18. Validar formulario con Flask WFT
- 19. Incluir una vista dentro de otra vista
- 20. Actualizar formulario de producto con Flask WFT
- 21. Borrar productos
- 22. Paginar registros
- 23. Código fuente de la sección
- 1. Introducción
- 2. Bootstrap 4: Instalar
- 3. Bootstrap 4: Configurar el layout de la app
- 4. Bootstrap 4: Mensajes de alerta y configurar nueva vista
- 5. Bootstrap 4: Configurar el diseño de los formularios
- 6. Bootstrap 4: Configurar navbar
- 7. Bootstrap 4: Configurar footer
- 8. Crear un macro para la paginación + componente en Bootstrap 4
- 9. Bootstrap 4: Jumbotron para los listados de productos
- 10. Crear una hoja de estilo personalizada
- 11. Bootstrap 4: modal para eliminar los registros
- 12. Instalar Fontawesome
- 13. Bootstrap 4: Configurar los Tooltips de la app
- 14. Crear modelo y el WTF para las categorías
- 15. Crear CRUD para las categorías
- 16. Crear las relaciones entre la tabla categoría y producto y campo en la WFT
- 17. Crear el listado de categorías en el formulario
- 18. Relaciones de Uno a Muchos (One to Many) entre categorías y productos
- 19. Demo: Relaciones de Muchos a Uno (Many to One) entre productos y categorías
- 20. Registrar cambios de la categorías del producto
- 21. Colocar la categorías en el listado
- 22. ¿Qué hemos aprendido?
- 23. Código fuente de la sección
- 1. Introducción
- 2. Autenticación simple en base a sesión: crear el módulo
- 3. Crear el modelo de usuario
- 4. Crear el formulario de registro
- 5. Crear función y vista de registro
- 6. Verificar si el usuario existe
- 7. Login del usuario
- 8. Cerrar sesión
- 9. Demo: Verificar si el usuario está autenticado y objeto de sesión
- 10. Confirmar contraseña
- 11. Opciones de usuario en el navbar
- 12. Módulo de login mediante Flask-Login
- 13. Primeros pasos con Flask-Login
- 14. Decoradores para proteger un módulo con login
- 15. Redireccionar mediante el parámetro next
- 16. Inyección de JavaScript para la ruta de redirección en login
- 17. Proteger módulo CRUD
- 18. Crear decoradores: proteger el CRUD con un usuario admin
- 19. Cambiar el diseño del formulario de login
- 20. Código fuente de la sección
- 1. Introducción y que vamos a aprender
- 2. Entendiendo como funciona una Rest Api y creando el módulo
- 3. Creando nuestra Rest Api: Esquema básico de la clase, get
- 4. Creando nuestra Rest Api: Convirtiendo la respuesta en json
- 5. Creando nuestra Rest Api: Definiendo todos los métodos de la clase y de HTTP
- 6. Creando nuestra Rest Api: Obtener el detalle de un registro
- 7. Instalar Postman para realizar peticiones
- 8. Petición Post: Recibir y validar
- 9. Petición Post: Crear el producto
- 10. Normalizar respuestas de la RestApi
- 11. Petición Delete: Eliminar un producto
- 12. Petición Put: Actualizar un producto
- 13. Crear RestApi de detalle de la categoría
- 14. Código fuente de la sección
- 1. Curso en Vue 3: Crear un proyecto en Vue con Vue CLI #1
- 2. Configurar los CORS en Flask para trabajar con Vue
- 3. Crear un listado de productos
- 4. Componente para crear productos
- 5. Enviar peticiones fetch desde vue mediante FormData a la Rest Api
- 6. Eventos personalizados entre componentes
- 7. Comunicación entre el componente padre al hijo
- 8. Editar un producto
- 9. Detalle de un producto, fetch
- 10. Detalle de un producto, referencia
- 11. Eliminar un producto
- 1. Introducción y que vamos a aprender
- 2. Sobre Vue e Instalar Vue CDN en nuestro proyecto
- 3. Crear un módulo para nuestra app en Vue y Hola Mundo
- 4. Métodos y evento click Vue
- 5. Los fetch para obtener recursos
- 6. Los ciclos en Vue y atributos y concatenación en Vue
- 7. Los condicionales en Vue
- 8. Los componentes en Vue para modularizar nuestra app
- 9. Crear un archivo aparte para la instancia principal de Vue
- 10. Ciclo de vía de Vue: generar automáticamente nuestro listado
- 11. Crear un componente para eliminar productos y registrar ID producto a eliminar
- 12. Pase de datos entre los componentes mediante los props
- 13. Los watch para observar cambios en propiedades
- 14. Bug al momento de activar repetidamente el modal en un mismo producto
- 15. Personalizar el modal con datos del producto y v-if vs v-show
- 16. Borrar producto mediante un fetch
- 17. Los eventos personalizados para devolver el producto eliminado
- 18. Los índices de los for para eliminar el producto
- 19. Componente guardar/actualizar producto: Crear
- 20. Los v-model para los campos de formulario
- 21. Componente guardar/actualizar producto: Crear producto
- 22. Componente guardar/actualizar producto: Actualizar producto
- 23. Componente guardar/actualizar producto: Recargar listado
- 24. Verificar código en la respuesta del servidor
- 25. Mostrar validaciones del lado del servidor
- 26. Listado de categorías desde la Rest Api
- 27. Código fuente de la sección
- 1. Introducción
- 2. Página 404 500 personalizada
- 3. Comando pip freeze
- 4. Ambientes virtuales
- 5. Carga de archivos: Crear campos y validaciones
- 6. Carga de archivos: Definir archivos permitidos y configuración del path carga
- 7. Carga de archivos: Validar extensión de archivos cargados
- 8. Carga de archivos: Registrar cambios y guardar archivo
- 9. Carga de archivos: opcional
- 10. Protección formularios CSRF
- 11. Valores por defecto en los parámetros de la URL
- 12. Definir categorías para los mensajes flash
- 13. Crear estructura para los mensajes flash de errores de formulario
- 14. Mostrar errores a cada campo formulario
- 15. Proteger Rest Api con autenticación/autorización
- 16. Validaciones personalizadas
- 17. Validaciones personalizadas y pase de parámetros
- 18. Problema con la validación personalizada al actualizar un registro
- 19. Configuraciones adicionales para el WTform
- 20. Definir formulario hijo dentro de otro
- 21. Construir un campo de formulario base
- 22. Construir múltiples campos de formulario de manera dinámica
- 23. Borrar campos de formulario de manera dinámica
- 24. Google Recaptcha
- 25. Error de validación Google Recaptha
- 26. Pasar datos del formulario a un objeto
- 27. Introducción a Celery: Procesamiento en Segundo Plano en Python: FastAPI Django y Flask
- 1. Flask Bootstrap 4
- 2. Flask Mail
- 3. Flask Migrate
- 4. Flask Babel
- 5. Flask Admin: Primeros pasos
- 6. Flask Admin: Modales para la creación y actualización
- 7. Flask Admin: Exportar, búsqueda y filtros
- 8. Flask Admin: Date y Datetime
- 9. Flask Admin: Listas estáticas
- 10. Flask Admin: Validaciones
- 11. Flask Admin: Personalizar los datos en crear o guardar
- 12. Flask Admin: Instanciar modelo de creación o edición del formulario
- 13. Flask Admin para los productos y categorias
- 14. Flask Admin: personalizar template
- 15. Flask Admin: personalizar template: listar, crear y editar
- 16. Flask Admin: Bootstrap 4
- 17. Flask Admin: Proteger el ModelView con el login de Flask Login
- 18. Flask User
- 19. Flask Restless
- 20. Flask Restless: Post, Patch y Delete
- 21. Flask Restless: Query de búsquedas
- 22. Flask Caching
- 23. Flask-DebugToolbar
- 1. Introducción
- 2. Realizar cambios iniciales para trabajar con Flask User
- 3. Trabajando con Flask Migrate para crear la nueva estructura
- 4. Realizar cambios en los enlaces de login y logout
- 5. Realizar cambios en los enlaces de login y logout parte 2
- 6. Habilitar la confirmación por emails
- 7. Personalizar templates de Flask User
- 8. Flask User: Personalizar template base
- 9. Flask User: Personalizar template login
- 10. Flask User: Personalizar template register
- 11. Flask User: Personalizar errores de formulario
- 12. Flask User: Personalizar template change password
- 13. Flask User Roles: Incorporar los Roles en el modelo de datos (Many to Many)
- 14. Flask User Roles: Cargar datos iniciales de manera manual
- 15. Flask User Roles: Proteger el dashboard con el nuevo esquema de roles
- 16. Flask User Roles: Crear un usuario de tipo superadmin
- 17. Demo: Flask User Roles: Asignar el rol de superadmin y de admin
- 18. Demo: Flask User Roles: Proteger dashboard con el rol de admin y superadmin
- 19. Flask User Roles: Signals para disparar eventos de usuario
- 20. Flask User Roles: Asignar rol por defecto al momento de crear un usuario
- 21. Flask User Form: Tipos
- 22. Flask User Form: Definir controlador y vista para registrar un usuario
- 23. Demo: Flask User Form: Personalizar
- 24. Definir constructor del modelo para crear un usuario
- 25. Crear un usuario
- 26. Hashing de la contraseña
- 27. Asignar roles de admin
- 28. Listado de usuarios
- 29. Demo: Listado de usuarios: Definir filtro por admin (implementación filter)
- 30. Habilitar la paginación
- 31. Actualizar un usuario
- 32. Validar username único
- 33. Borrar un usuario
- 34. Establecer el rol para CRUD de usuarios superadmin
- 35. Seleccionar un template para mejorar el dashboard
- 36. Instalar el template para nuestra aplicación
- 37. Configurar el header
- 38. Configurar el navbar
- 39. Configurar el footer
- 40. Configurar las cartas del listado
- 41. Configurar los formularios: Definir estructura
- 42. Configurar los formularios: Crear cabecera
- 43. CSS personalizado para el dashboard
- 44. Mostrar enlaces de paginación en el centro
- 45. Crear template base para el módulo de usuarios
- 1. Introducción
- 2. Crear estructura inicial: Crear módulo facturación
- 3. Crear CRUD para usuarios de tipo regular | Variables globales
- 4. Verificar rol del usuario autenticado en opciones del sidebar
- 5. Diseño del filtro de búsqueda
- 6. Búsqueda de productos por palabras claves
- 7. Mostrando el listado de productos
- 8. Crear un formulario para procesar un producto
- 9. Devolver listado de productos vía json
- 10. Consumir productos vía json: Crear el fetch
- 11. Consumir productos vía json: Crear la estructura
- 12. Consumir productos vía json: Crear el listado
- 13. Obtener y validar mediante los productos seleccionados con JavaScript
- 14. Definir los datos a enviar vía fetch/post
- 15. Crear tabla para las ventas
- 16. Crear tabla para los productos de las ventas (OneToMany)
- 17. Guardar los datos del formulario
- 18. Validar datos de formulario: Crear formulario en Flask
- 19. Validar datos de formulario: Crear validaciones y validar controlador y vista
- 20. Validar datos de formulario: Ids de productos
- 21. Validar datos de formulario: Mandar el token csrf
- 22. Modal de Bootstrap: Configurar y habilitar función para el modal
- 23. Modal de Bootstrap: Mostrar mensajes del servidor
- 24. Modal de Bootstrap: Variar modal si la respuesta es 200 o 50x
- 25. Listado de ventas
- 26. Imprimir un sencillo PDF: Librería y uso básico
- 27. Imprimir un sencillo PDF: Librería y uso básico
- 28. Imprimir un sencillo PDF: Crear página HTML
- 29. Imprimir un sencillo PDF: Crear página HTML
- 30. Imprimir un sencillo PDF: Imprimir un PDF
- 31. Imprimir un sencillo PDF: Descargar el PDF
- 1. Introducción
- 2. Renombrar controladores: Caso de estudio controlador producto
- 3. Definir una URL base para el controlador mediante Blueprint
- 4. Modelo único en nuestros módulos: Renombrar modelo producto
- 1. Introducción
- 2. Instalando Flask restful
- 3. Crear una Api Rest mínima
- 4. Crear una Rest Api para las categorías
- 5. Método para verificar si la categoría existe
- 6. Método para convertir a json
- 7. Obtener el detalle de una categoría
- 8. Obtener Todas las categorías
- 9. Crear una categoría
- 10. Deshabilitar la protección para la CSRF para la Rest
- 11. Actualizar una categoría
- 12. Borrar una categoría
- 13. Obtener datos desde con el Request parsing
- 14. Campos para la salida (parseo) de datos
- 15. Obtener categorías filtrando por el nombre
- 16. Autenticación requerida: Primeros pasos
- 17. Autenticación requerida: Integrar FlaskUser/FlaskLogin
- 1. Introducción
- 2. Configurar pyopenssl
- 3. Instalar el paquete para la OAuth Flask Dance
- 4. Obtener las credenciales de Facebook
- 5. Configurar el Login via Facebook en Flask
- 6. Obtener las credenciales de Google
- 7. Configurar el Login via Google en Flask
- 8. Obtener las credenciales de Twitter
- 9. Configurar el Login via Twitter en Flask
- 1. Introducción
- 2. Crear nuevo proyecto
- 3. Explicar el flujo básico de Socket y la comunicación flux duplex
- 4. Crear página HTML de ejemplo
- 5. Comunicación full duplex conexión servidor
- 6. Comunicación full duplex conexión cliente
- 7. Comunicación varios clientes, broadcast
- 8. Enviar varios argumentos y un json
- 9. Crear una app de chat: Enviar mensajes
- 10. Crear una app de chat: Listar mensajes
- 11. Crear una app de chat: Limpiar textarea al enviar un mensaje
- 12. Crear una app de chat: Inyectar fecha actual
- 13. Crear una app de chat: Pasar información sobre la persona
- 14. Crear esquema modular
- 15. Crear archivo de configuración
- 16. Integrar base de datos: Flask Migrate y SQAlchemy
- 17. Integrar con Flask Login y Flask WTF: Registrarse
- 18. Integrar con Flask Login y Flask WTF: Iniciar Sesión
- 19. Integrar con Flask Login y Flask WTF: Cerrar Sesión
- 20. Proteger ruta para el chat y pasar datos usuario autenticado
- 21. Componer datos del usuario autenticado en el mensaje
- 22. Mensajes Room: Crear modelo
- 23. Mensajes Room: Guardar mensajes
- 24. Mensajes Room: Devolver mensajes en un diccionario
- 25. Listar mensajes
- 26. Mensajes Room: Crear mensajes y habitaciones
- 27. Rooms: Duplicar aplicación
- 28. Rooms: Primeras pruebas
- 29. Rooms: Crear pool de habitaciones a las cuales podamos des/suscribirnos
- 30. Detectar usuarios des/conectados
- 31. Rooms: Registrar en qué habitación estamos suscritos
- 32. Rooms: Seleccionar habitación y enviar mensajes
- 33. Namespace
- 34. Método on_event para definir eventos del socket
- 35. Manejo de Errores
- 36. Publicar en git
- 1. all(), filters(), limits()
- 2. first()
- 3. like()
- 4. negación
- 5. joins
- 1. Railway, deploy de tus aplicaciones en PHP, Python web, Node... como en Heroku GRATIS
- 2. Deploy en Railway
- 3. Curso de Docker para desarrolladores
- 4. DOCKERIZAR tu APP en FLASK: Crea tu Imagen Docker Fácil y Rápido en 2 Pasos - 13
- 5. DOCKERIZAR tu APP en FLASK + Servidor en Gunicorn - 15
- Algunas recomendaciones
Este es el curso MÁS completo y actualizado que encontrarás de Flask 3, diseñado para llevar tus habilidades de backend con Python al siguiente nivel de profesionalismo. Aprenderemos a construir aplicaciones robustas bajo un esquema modular, permitiendo un control total sobre cada componente de tu arquitectura.
"Si alguna vez has sentido que los frameworks pesados te quitan el control, déjame decirte algo: Flask 3 es la libertad y potencia que tu stack de Python estaba buscando."
El detalle del curso lo puedes ver en la parte inferior de esta publicación. Esta es una inversión estratégica para tu carrera: mantendré el contenido actualizado de manera gratuita para las nuevas versiones, ofreciendo el mayor soporte técnico a través de nuestra Academia.
Lo que aprenderás en este Curso Maestro
- Por qué Flask 3 es el estándar para microservicios y aplicaciones modulares en Python 3.12.
- Arquitectura Profesional: Cómo implementar Blueprints para mantener proyectos escalables y organizados.
- Ecosistema Moderno: Integración total de APIs RESTful con Vue 3 y Bootstrap 5.
- Persistencia Avanzada: Dominio de SQLAlchemy, migraciones con Alembic y gestión de bases de datos relacionales.
- Seguridad Full-Stack: Implementación de autenticación JWT, roles de usuario y protección CSRF.
De Principiante a Senior: La Verdad Sobre Aprender Flask 3
Aprender desarrollo backend hoy puede ser un caos de tutoriales desactualizados que te enseñan el "Hola Mundo" y te abandonan. La gran pregunta siempre es: "¿Cómo paso de un solo archivo app.py a una aplicación real lista para producción?". La respuesta es la modularidad.
Si ya conoces Python y quieres dar el salto a la web sin la "magia" restrictiva de otros frameworks, estás en el lugar correcto. Muchos desarrolladores fallan al intentar escalar Flask porque no entienden su filosofía de microframework. Aquí eliminamos la fricción y te damos la ruta directa al código profesional.
¿Por qué Flask 3 es el Motor de las Aplicaciones Flexibles?
Flask 3 no es solo un paquete; es una filosofía que simplifica la creación de interfaces dinámicas manteniendo el control absoluto sobre tu stack tecnológico. Al ser minimalista, te permite agregar exactamente lo que necesitas, evitando la sobrecarga de archivos innecesarios.
Flask no es solo un microframework: es el control total
“Flask es uno de esos frameworks que te dejan construir justo lo que necesitas. Al ser un microframework, ves el esqueleto crecer en tus manos sin confusiones de archivos o módulos que no has colocado tú mismo.”
Tabla de Decisión: ¿Qué framework dominar en Python?
| Objetivo | Framework Ideal | ¿Por qué? | Prioridad |
|---|---|---|---|
| Control total & APIs rápidas | Flask | Elegancia y flexibilidad. Ideal para entender la web bajo el capó. | Alta (Maestría) |
| Proyectos monolíticos CMS | Django | "Pilas incluidas". Trae todo configurado por defecto. | Media-Alta |
| APIs Asíncronas Modernas | FastAPI | Rendimiento extremo, requiere dominio previo de tipos. | Media (Especialización) |
El "Enfoque Pro": Código Limpio vs Código Tradicional
Observa cómo Flask 3 transforma una aplicación desordenada en una arquitectura modular, mantenible y profesional:
@app.route('/users')
def users():
# Lógica, validación y DB acopladas
db = get_db()
users = db.query("SELECT * FROM users")
return render_template('users.html', users=users)@user_bp.route('/users')
def list_users():
# Separación clara de responsabilidades
users = auth_service.get_all_active_users()
return render_template('users/index.html', users=users)En el curso, te enseñaré a explotar los Blueprints para reducir el acoplamiento mientras mantienes una estructura digna de un ingeniero senior.
Tu Ruta de Aprendizaje: Maestría en Arquitecturas Python
He diseñado esta metodología para que pases de configurar tu entorno hasta alcanzar una maestría técnica integrando APIs REST, sistemas de roles y comunicación con frontends modernos.
Fases del Curso Garantizadas:
- Fase 1: Fundamentos y Estructuración. Jinja2, sistema de rutas profesional y arquitectura modular para evitar el desorden.
- Fase 2: Persistencia y Seguridad. Automatización con SQLAlchemy, Alembic, Flask Login y protección por roles.
- Fase 3: Ecosistema API y Frontend. Construcción de APIs REST robustas, JWT y consumo interactivo mediante Vue 3.
- Fase 4: Optimización y Producción. Integración de caché, testing con Pytest y despliegue profesional en servidores reales.
Recursos Gratuitos para Empezar AHORA
Accede a material de alta calidad sin costo y comprueba por qué Flask 3 es el framework más versátil de Python:
Libro y Curso Comunitario Gratis
Descubre mi estilo de enseñanza con la versión LITE. Lee los primeros capítulos y comprueba la calidad del material.
Repositorios del Proyecto
Explora el código base que utilizaremos en el curso. Líneas de código profesional listas para arrancar tus proyectos:
Prueba la Aplicación Demo
Interactúa con el proyecto final (Blog) que construirás en el curso.
¿Por qué aprender Flask 3 hoy? (y qué lo hace tan poderoso)
Flask sigue transformando la manera en que entendemos el desarrollo con Python. No es solo para proyectos pequeños; es una capa que permite crear desde microservicios hasta arquitecturas híbridas con Vue o React sin perder la sencillez.
Productividad y Flexibilidad Real
Desarrollar con Flask te permite agregar funcionalidades de a poco, sin sentirte abrumado por estructuras gigantes. Esa flexibilidad es la que lo hace tan poderoso para escalar proyectos reales manteniendo un código limpio.
Flask 3 en el Mercado Laboral
Dominar Flask 3 te posiciona como un desarrollador Full-Stack pragmático y eficiente, capaz de entender cómo funciona la web bajo el capó sin depender de la "magia" de frameworks automáticos. Es el framework preferido para ciencia de datos y microservicios.
¿Qué vas a aprender y para quién es este curso?
Aprender Flask no tiene por qué ser un caos de ventanas abiertas y tutoriales que se contradicen. En este curso te llevo desde cero (pero partiendo de que ya sabes Python) hasta dominar la creación de APIs y apps profesionales.
Si ya programas en Python y quieres dar el salto al desarrollo web sin la complejidad innecesaria de Django, este curso es para ti.
Flask me cambió la forma de entender el backend, así que aquí aprenderás:
Cómo estructurar aplicaciones modulares mediante el uso de Blueprints.
Cómo crear APIs REST seguras y consumirlas desde un frontend moderno como Vue 3.
Cómo gestionar bases de datos, migraciones y seguridad sin perder el control del código.
Temario del Curso y Libro
Este curso está diseñado como una formación práctica y progresiva. No perdemos el tiempo; vamos directo al grano de la arquitectura profesional:
- Módulo 1: Fundamentos
- Instalación
- Entorno virtual
- Primer servidor
- Rutas básicas
- Templates y archivos estáticos
- Módulo 2: Estructura del Proyecto
- Configuración avanzada
- Blueprints
- Errores 404 y handlers
- Módulo 3: Formularios y Seguridad
- WTForms
- Validaciones
- CSRF
- Mensajes flash
- Módulo 4: Bases de Datos
- SQLAlchemy
- Relaciones
- CRUD profesional
- Migraciones
- Módulo 5: Sesiones, Roles y Autenticación
- Sesiones
- Login y logout
- Roles
- Protección de rutas
- Módulo 6: API REST y consumo con Vue
- Endpoints
- Token de autenticación
- Frontend en Vue para consumir la API
- Módulo 7: Cache, emails y extras
- Cache con extensión
- Envío de correos
- Buenas prácticas
Integrar Flask 3 con Vue 3 y Bootstrap 5
La magia ocurre cuando el backend robusto de Python se une a la interactividad de Vue. En el curso cubrimos esta integración:
- Creación de endpoints seguros para una API REST.
- Implementación de tokens de autenticación para el frontend.
- Configuración de Vue 3 para consumir datos de Flask sin latencia.
- Estilizado profesional mediante componentes de Bootstrap 5.
- Gestión de estados y reactividad en el cliente.
Ventajas Únicas de esta Formación
- Actualizado por Años: Si sale Flask 4, este curso recibirá las actualizaciones correspondientes sin costo adicional.
- Enfoque Práctico Total: Construimos proyectos reales (Blog, APIs, Dashboards) usados en producción.
- Soporte en la Academia: Resolución de dudas y acceso a snippets exclusivos en el blog.
- Equivalencia Libro/Curso: El 100% del contenido está disponible para estudiar como prefieras, incluso offline.
Experiencia del Autor en el Mundo Real
“Llevo años desarrollando con Python y he visto cómo Flask ha madurado hasta convertirse en una herramienta indispensable. En este curso, te entrego las decisiones que tomarías si ya fueras un ingeniero senior: desde inyección de dependencias hasta arquitectura modular. Mi propio blog y sistemas reales están construidos con esta tecnología, así que te enseño lo que realmente funciona en entornos de producción.”
Preguntas Frecuentes
- ¿Para quién es este curso?
- Programadores que ya conocen Python y quieren dominar el backend web.
- Desarrolladores que buscan flexibilidad y control total sobre sus proyectos.
- Nota: No es para principiantes absolutos que nunca han tocado Python.
- ¿Qué requisitos necesito?
- Conocimientos básicos/intermedios de Python.
- Entorno de desarrollo instalado (Python 3.10+, pip).
- ¡Ganas de construir aplicaciones escalables sin "magia" innecesaria!
- ¿El curso incluye el libro?
- Se venden por separado o en Bundle; el contenido es equivalente y se complementan para una experiencia total de aprendizaje.