web-dev-qa-db-fra.com

Qu'est-ce que Flask Blueprints, exactement?

J'ai lu la documentation officielle Flask sur les plans et même n ou deux blogs sur leur utilisation.

Je les ai même utilisées dans mon application Web, mais je ne comprends pas tout à fait ce qu'elles sont ou comment elles s'intègrent à l'ensemble de mon application. Comment est-ce similaire à une instance de mon application mais pas tout à fait? La documentation est complète mais je cherche une explication profane ou une analogie éclairante pour la spark la chercher. J'étais suffisamment perplexe lorsqu'un collègue m'a demandé de leur expliquer un modèle Flask que j'ai choisi de demander ici.

145
JoshieSimmons

Un plan directeur est un modèle permettant de générer une "section" d'une application Web. Vous pouvez penser à cela comme un moule:

A medallion mold with a gold medallion freshly removed from it

Vous pouvez prendre le plan et l'appliquer à votre application à plusieurs endroits. Chaque fois que vous l'appliquez, le plan crée une nouvelle version de sa structure dans le plâtre de votre application.

# 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)

Il s'agit d'un simple moule pour travailler avec des arbres - il est dit que toute application utilisant des arbres doit donner accès à ses feuilles, ses racines et ses cernes (par année). En soi, il s’agit d’une coquille vide. Elle ne peut pas acheminer, elle ne peut pas répondre tant qu’elle n’est pas imprimée sur une application:

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")

Une fois créé, il peut être "impressionné" par l'application en utilisant le register_blueprint fonction - ceci "impressionne" le moule du modèle sur l’application aux emplacements spécifiés par url_prefix.

240
Sean Vieira