python - mod_wsgi - ¿Qué son los planos de Flask, exactamente?
what is python flask (1)
He leído la documentación oficial de Flask sobre Blueprints e incluso one o two publicaciones de blog sobre su uso.
Incluso los he usado en mi aplicación web, pero no entiendo completamente qué son o cómo encajan en mi aplicación como un todo. ¿Cómo es similar a una instancia de mi aplicación pero no del todo? La documentación es exhaustiva, pero busco una explicación profana o una analogía esclarecedora para encenderla. Estaba lo suficientemente perplejo cuando un colega me pidió que les explicara un modelo de Flask que elegí preguntar aquí.
Un blueprint es una plantilla para generar una "sección" de una aplicación web. Piénsalo como un molde:
Puede tomar el plano y aplicarlo a su aplicación en varios lugares. Cada vez que lo aplique, el plan creará una nueva versión de su estructura en el enlucido de su 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 debería proporcionar acceso a sus hojas, sus raíces y sus anillos (por año). Por sí solo, es un caparazón hueco: no puede enrutar, 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 que se ha creado, puede "impresionado" en la aplicación al usar la función register_blueprint
. Esto "impresiona" el molde del blueprint en la aplicación en las ubicaciones especificadas por url_prefix
.