No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Flask

Curso de Flask

Bernardo Cassina

Bernardo Cassina

Uso de Blueprints

23/36
Recursos

Aportes 76

Preguntas 14

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

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

https://www.youtube.com/watch?v=3Yz6QanCSaA

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:

Doc

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/

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

Todo iba muy bien hasta esta clase. Seguí todo como monito entrenado, y mi app funciona. Pero no entendí nada de nada.
![](https://static.platzi.com/media/user_upload/image-b561d4aa-56a6-46dc-8971-6de00f84fe46.jpg) Ayuda, por favor, estoy en más errores y mientras más test ponga, más errores me salen.

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

https://www.youtube.com/watch?v=3Yz6QanCSaA

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)

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/

  • Funciona de manera muy similar a como funciona una app de Flask, sin emabrgo son diferentes ya que esta es la huella de como construir o extender la app.
  • Basicámente graban operaciones para ser ejecutadas cuando son registradas en una aplicación. Flask asocia funciones tipo vista con BLUEPRINTS cuando se envian solicitudes y se generan URL’s de un ‘endpoint’ al otro.
<h3>CASOS DE USO DE LOS BLUEPRINTS</h3>
  • Modularizar una app en un set de BLUEPRINTS. Principalmente para aplicaciones muy grandes. Un proyecto puede instanciar un objeto tipo aplicación (como en POO se instancia una clase), inicializar multiples extensiones, y registrar una colección de BLUEPRINTS.
  • Se puede registrar un BLUEPRINT en una aplicación con un prefijo URL y/o un subdominio. Los parámetros en el prefijo URL o en el subdominio se vuelven argumentos de vista comunes (con valores por defecto) a lo largo de las funciones de las vistas creadas en el BLUEPRINT.
  • Se pueden registrar BLUEPRINTS multiples veces en una aplicación con diferentes reglas URL.
  • Se pueden proveer filtros plantilla (template filters), archivos estáticos, plantillas (templates) y otras funcionalidades.

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 😃