soy yo o esta clase se volvió un enredo?
Fundamentos de Flask
Qué aprenderás sobre Flask
¿Cómo funcionan las aplicaciones en internet?
¿Qué es Flask?
Instalación de Python, pip y virtualenv
Hello World Flask
Debugging en Flask
Request y Response
Ciclos de Request y Response
Uso de templates y archivos estáticos
Templates con Jinja 2
Estructuras de control
Herencia de templates
Include y links
Uso de archivos estáticos: imágenes
Configurar páginas de error
Extensiones de Flask
Flask Bootstrap
Configuración de Flask
Implementación de Flask-Bootstrap y Flask-WTF
Uso de método POST en Flask-WTF
Desplegar Flashes (mensajes emergentes)
Pruebas básicas con Flask-testing
Proyecto
Planteamiento del proyecto: To Do List
App Factory
Uso de Blueprints
Blueprints II
Base de datos y App Engine con Flask
Configuración de Google Cloud SDK
Configuración de proyecto en Google Cloud Platform
Implementación de Firestore
Autenticación de usuarios: Login
Autenticación de usuarios: Logout
Signup
Agregar tareas
Eliminar tareas
Editar tareas
Deploy a producción con App Engine
Conclusiones
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Bernardo Cassina
Aportes 76
Preguntas 14
soy yo o esta clase se volvió un enredo?
Blueprints: son una serie de rutas que podemos integrar en nuestra aplicacion pero en otro directorio
es decir, me va a permitir modular la aplicación en pequeñas aplicaciones que hagan cosas específicas
como autenticación o la parte de welcome, o si tenemos un dashboard de tareas por ejemplo también
crearíamos un blueprint para las tareas específicas y es más fácil de manejar.
En mi opinión este curso necesito un poco mas de organización. En vez de trabajar sobre el mismo proyecto de las lecciones previas hubiera estado mejor que se iniciara un nuevo proyecto y se enfocara en explicar la arquitectura de la aplicación
Está super cool que enseñen Flask con test driven development 😄
Para tener un poco más de claridad, a mi me sirvió entender el árbol del proyecto, depronto a alguien también le sirva:
## arbol del proyecto
## /venv
## --main.py lógica de la app
## --/tests
## ----test_base.py pruebas para test
## --/app
## ----__init__.py crea la app, trae configuraciones de config.py, trae el blueprint creado y lo registra en la app
## ----config.py fija configuraciones de la app, a ser consumido por /app/__init__.py
## ----forms.py crea la clase para los formularios. A ser consumido por main.py
## ----/auth
## ------__init__.py crea el blueprint auth, importa vistas de views.py. Es decir que este va a tener el blueprint y la vista de login.
## ------views.py crea una vista de Login. La vista es una ruta a /login/login.html usando el blueprint auth creado en auth/__init__.py en vez de app.
Ojala escribiese el código en una única ventana del editor para que se pudiesen ver siempre las líneas enteras y no cortadas, que como siempre va con doble ventana cuesta de seguir y tomar notas.
(Ya se que cuando uno esta escribiendo código con varios archivos a la vez es más cómodo eso, pero no para enseñar a otros creo yo.)
Hasta este video me funcionaba todo. Despues de esto, RIP app
Me parece excelente el profesor que domina muy bien las herramientas, solo que asume que conocemos todo el tema de blueprint y las pruebas unitarias.
Pienso que deberian mejorar y explicar un poco mas
Pocas personas conozco que usan “Test-driven Development” en este tipo de proyectos se ve la gran utilidad que tiene, ya que puedes reestructurar todo, correr el test y ver si algo dejo de funcionar en cuestión de segundos, muy bien por eso!
Me dio un error de contexto pero agregué esta línea al config y se solucionó
PRESERVE_CONTEXT_ON_EXCEPTION = False```
A mi modo de pensar, creo que no fue buena idea haber reciclado lo que se había hecho para aprender los fundamentos de Flask.
Creo que hubiera sido mejor, empezar desde cero la construcción del proyecto. A mi me generó bastantes errores que no pude lograr corregir. La solución más fácil fue descargar los aportes y seguir.
Si no entienden Bien el Concepto de Blueprints Aqui un enlace donde podras incontrar mas informacion
a algunos le da error el flask test porque les falta instalar (blinker) lo instalan de la siguiente manera
pip install blinker
Si su VS Code les formatea el código y hace que el import de views se vaya hasta arriba pueden desactivarlo presionando Ctrl + Shift + P, luego busquen Preferences: Open Setting (JSON) y den click, esto abrirá la configuración de VS Code. En el archivo busquen la línea que dice “editor.formatOnSave” y cambien el true por false
sino les quedo muy claro este tema, este video lo explica bastante bien y en español. Espero los ayude:
https://www.youtube.com/watch?v=3Yz6QanCSaA
Para aquellos que se perdieron en la clase, les recomiendo consultar la documentación de assert’s en python. No se desanimen! 😃 Les dejo un link de introducción:
me veré algún que otro vídeo de blueprints, porque creo que da para un minicurso esa herramienta por si sola, pero más o menos se entiende que blueprints sirve para modularizar nuestra app.
Hasta aqui iba bien, el profesor empezó con un desorden grande desde este momento. Muy malo este curso.
Comentando el import y el register si funcionan los test hasta ese punto
Les paso un min ivideo para antender lo que es en blueprints, porque aquí se entendió poco.
https://www.youtube.com/watch?v=3Yz6QanCSaA&ab_channel=C-R-A-GCHANNEL
te recomiendo que si tu código falla simplemente descarga el código del profe y compáralo con el tuyo de seguro encuentras el error
Blueprints son rutas, para hacer de nuestra aplicación micro servicios
Si les da el error de import circular asegúrense que su código de auth/init.py luzca así:
from flask import Blueprint
auth = Blueprint('auth', __name__, url_prefix='/auth')
from . import views
Lo que podría suceder es que el editor mueva a la primera linea esta:
from . import views
De todas maneras no creo que sea la mejor práctica, sugiero modificar la estructura y el código dentro de init siguiendo la siguiente guía:
exploreflask . com /en/latest/blueprints.html
(Juten los espacios)
Cuando cree el metodo test_login_get() en test_base.py, obtuve un error indicandome que login.html no podia ser encontrado.
jinja2.exceptions.TemplateNotFound: login.html
Asi que para poder solucionar ese error, y el error del siguiente metodo de test, tuve que crear el archivo login.html en los templates y crear todo su contenido. A partir de alli, todos los test corren, en Windows.
Hay personas comentando que las clases estan muy desordenadas, deben tomar en cuenta que este curso tiene al menos 4 annos al dia de hoy (2022), y que probablemente flask ha cambiado, ademas de que estamos trabajando con un SO distinto al del profe platzi.
A este curso le falto un poco de teoría
en este enlace pueden hacer una consulta si se sienten enredado
https://www.manejandodatos.es/2015/06/flask-for-large-apps-using-blueprints/
Documentación Complementaria de blueprints.
https://j2logo.com/tutorial-flask-leccion-6-estructura-proyecto-flask-blueprints/
Me fue de gran ayuda leer esto.
A mi me sale el siguiente error:
Borre las rutas de los anchor en el archivo navbar.html y todo volvió a funcionar correctamente. Alguna idea de porque pasa esto?
// Cambie url_for por un simple numeral '#'
<li><a href="{{ url_for('index') }}">Inicio</a></li>
Ayuda Platzinautas! anoche me funcionaban los test pero ahora no me reconoce el comando flask test. Ya verifique que estoy trabajando en el entorno correcto, tengo todos los paquetes instalados y cree la variable FLASK_APP ¿Alguna idea?
Aqui este profesor me dejo como que salvense , no le enseñare nada a ustedes
No entiendo por que este profesor enseña tanta informaciones tan junta asi no se puede aprender
esto de hacer test con flask esta genial.
Un blueprint es como el esqueleto de una aplicacion
Buena info para repasar y complementar : Link
Yo lo entendí a la prefección…
Por lo que entiendo es que nuestro archivo el cual veníamos trabajando lo estamos dividiendo en otros archivos mas pequeños para tener un mejor control ese vendría siendo el uso principal del los Blueprints
Esta clase ha sido la peor del curso, todo iba excelente pero aquí no entendí nada
qué es un blueprint
Las pruebas AssertRedirects y AssertTemplateUsed fallan en Windows. A pesar de eso, la app funciona sin problemas
Def de Blueprint en Flask
un Blueprint define una colección de vistas, plantillas, recursos estáticos, modelos, etc. que pueden ser utilizados por la aplicación. Los usaremos siempre y cuando queramos organizar la aplicación en diferentes módulos.
Los Blueprints son utilizados para modularizar el código en pequeñas partes más fáciles de usar. Es decir que fragmentamos nuestra aplicación usando directorios y url’s que le índiquen a la app a donde ir y que hacer,
He ido despacito por los comentarios que dicen, me salte la prueba de test pero el login salió bien.
estuvo fácil de entender
Me perdí un poco, toca ver documentación extra.
En mi caso el curso está muy bien entendido, hay que seguir el paso a paso de lo que se está enseñando.
es importe seguir los paso a paso de los test
Me pierdo bastante tratando de seguir el curso, siento que esta un poco mal organizado, me falló y el código está como él lo puso
Tampoco me funcionaba flask test, declaré
"export FLASK_APP=main. py "
Y listo
Hay que poner mucha atencion para no perderse
Que vayamos desarrollando y testeando, es lo mejor! me encanta!
voy a volver a ver el video otra vez pero me creo que este es la primera clase mal explicada de todo el curso
Venga campeones
👍👍👍
Si alguien se logra perder con Bluprint dejare estos dos videos que lo explican muy bien
Video en español
Video en ingles
Ambos son buenos, el de ingles si no lograste aprender el idioma no importa solo mira el video y como usa el url_prefix
Seria bueno que entendieras primero que son los blueprints para asi no estar tan perdido , este video puede ayudarte con eso
Este es otro de los cursos de Platzi que, después de la mitad del curso, avanza tan rápido que es muy difícil seguirle el ritmo.
cuando lei los comentarios de la clase me asuste un poco, pero gracias a sus aportes pude ver algunos videos, revisar la documentación y logre entender un poco mas. Gracias a todos
Les recomiendo a las personas que se perdieron y que les gustaria aumentar su conocimiento, https://www.youtube.com/watch?v=Qr4QMBUPxWo esta es un curso que hace solidas las bases que Bernando enseña en este curso, solamente que esta en ingles, pero creo que se pueden poner en subtitulos
Qué se supone que es un Blueprint? no logro entenderlo del todo
Genial, siento que aparte de Flask, estoy aprendiendo algo de TDD.
Como podria hacer un test para validar una respuesta en json, e tratado de esa forma pero sin resultados!
def test_hello_post(self):
fake_user = {
"username" : "sonne",
"password" : "holiboli"
}
response = self.client.post(
url_for('login'),
data=json.dumps(fake_user),
content_type='application/json'
)
data = json.loads(response.get_data(as_text=True))
self.assertEqual(data.get("status"), True)
la url “/login” devuelve lo siguiente
{
“password”: “holiboli”,
“status”: true,
“username”: “sonne”
}
<code>
A que se refiere cuando dice renderear?
me manda un problema al momento de hacer el test :
def test_auth_blueprint_exists(self):
self.assertIn(‘auth’, self.app.blueprints)
me dice que tengo un problema con la linea: app.register_blueprint(auth)
Documentación: https://flask.palletsprojects.com/en/1.1.x/signals/
Los blueprints sale de que en la arquitectura se hacen planos de cada modulo no en si de una construccion gigante. Se traslada al desarrollo de software permitiendo tener colecciones de Views de cosas pequeñas en modulos y asi tener un codigo mas mantenible
Para saber ser profesor de cualquier cosa hay que saber explicarse y llevar un mínimo orden Bernardo.
Tal vez tu entiendas lo que cuentas
Un pequeño resumen y contextualización de la documentación oficial:
<h1>BLUEPRINTS O ‘PLANOS’</h1>Documentación oficial: https://flask.palletsprojects.com/en/1.1.x/blueprints/
NOTA: Recuerda que los BLUEPRINTS no son aplicaciones, son un set de operaciones que pueden ser registradas en una aplicación, incluso múltiples veces.
Que es un blueprint: Un Blueprint es una forma de organizar un grupo de vistas relacionadas y otro código. En lugar de registrar vistas y otro código directamente con una aplicación, se registran con un plano. Luego, el plano se registra con la aplicación cuando está disponible en la función de fábrica.
.
.
Ejemplo:
flaskr/auth.py
import functools
from flask import (
Blueprint, flash, g, redirect, render_template, request, session, url_for)from werkzeug.security import check_password_hash, generate_password_hash
from flaskr.db import get_db
bp = Blueprint('auth', __name__, url_prefix='/auth')
juemadre por unos pequeñitos errores uno se puede quemar tiempo hay jaja
Parecido el routing en Node y Express. Creo que el ya tener experiencia en eso me ayudó a no tener problemas para entender esto
Una sugerencia a los que vayan a ver este video, mirenlo de mano con el archivo de github por si se pierden. Buena suerte 😃
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?