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 74

Preguntas 14

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

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.

Est谩 super cool que ense帽en Flask con test driven development 馃槃

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

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 鈥淭est-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 鈥渆ditor.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鈥檚 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

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鈥檚 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

{
鈥減assword鈥: 鈥渉oliboli鈥,
鈥渟tatus鈥: true,
鈥渦sername鈥: 鈥渟onne鈥
}

<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(鈥榓uth鈥, 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 鈥楶LANOS鈥</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鈥檚 de un 鈥榚ndpoint鈥 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 馃槂