¿Qué son exactamente los planos de Flask?

Resuelto JoshieSimmons asked hace 10 años • 5 respuestas

He leído la documentación oficial de Flask sobre Blueprints e incluso una o dos publicaciones de blog sobre su uso.

Incluso los he usado en mi aplicación web, pero no entiendo completamente qué son ni cómo encajan en mi aplicación en su conjunto. ¿En qué se parece a una instancia de mi aplicación pero no del todo? La documentación es completa, pero busco una explicación sencilla o una analogía esclarecedora que me lo enseñe. Me quedé bastante perplejo cuando un colega me pidió que les explicara un plano de Flask que elegí preguntar aquí.

JoshieSimmons avatar Jun 26 '14 07:06 JoshieSimmons
Aceptado

Un plano es una plantilla para generar una "sección" de una aplicación web. Puedes pensar en ello como un molde:

Un molde de medallón con un medallón de oro recién extraído.

Puede tomar el plano y aplicarlo a su aplicación en varios lugares. Cada vez que lo apliques, el plano creará una nueva versión de su estructura en el yeso de tu aplicación.

# An example
from flask import Blueprint

tree_mold = Blueprint("mold", __name__)

@tree_mold.route("/leaves")
def leaves():
    return "This tree has leaves"

@tree_mold.route("/roots")
def roots():
    return "And roots as well"

@tree_mold.route("/rings")
@tree_mold.route("/rings/<int:year>")
def rings(year=None):
    return "Looking at the rings for {year}".format(year=year)

Este es un molde simple para trabajar con árboles: dice que cualquier aplicación que trate con árboles debe brindar acceso a sus hojas, raíces y anillos (por año). Por sí solo, es una cáscara hueca: no puede dirigirse, no puede responder, hasta que se imprime en una aplicación:

from tree_workshop import tree_mold

app.register_blueprint(tree_mold, url_prefix="/oak")
app.register_blueprint(tree_mold, url_prefix="/fir")
app.register_blueprint(tree_mold, url_prefix="/ash")

Una vez creado, se puede "imprimir" en la aplicación mediante el uso de la register_blueprintfunción; esto "impresiona" el molde del plano en la aplicación en las ubicaciones especificadas por url_prefix.

Sean Vieira avatar Jun 26 '2014 01:06 Sean Vieira

Como se señala en un comentario de @Devasish , este artículo proporciona una buena respuesta:

http://exploreflask.com/en/latest/blueprints.html

Citando el artículo:

Un ejemplo de esto sería Facebook. Si Facebook usara Flask, podría tener planos para las páginas estáticas (es decir, inicio de sesión, registro, información, etc.), el panel de control (es decir, el servicio de noticias), perfiles (/robert/about y /robert/photos), configuraciones (/settings/security y /settings/privacy) y muchos más. Todos estos componentes comparten un diseño y estilos generales, pero cada uno también tiene su propio diseño.

Esta es una muy buena interpretación, especialmente la parte "si Facebook usara Flask". Nos brinda una situación concreta para visualizar cómo funciona realmente Blueprint.

Tran Cuong avatar Oct 12 '2019 15:10 Tran Cuong