Un modèle est un modèle pour générer une "section" d'une application Web. Vous pouvez le considérer comme un moule:
Vous pouvez prendre le plan directeur et l'appliquer à votre application à plusieurs endroits. Chaque fois que vous l'appliquez, le plan créera 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 dit que toute application qui traite des arbres devrait donner accès à ses feuilles, ses racines et ses anneaux (par année). En soi, c'est une coquille creuse - elle ne peut pas acheminer, elle ne peut pas répondre, jusqu'à ce qu'elle soit 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 qu'il est créé, il peut être «impressionné» sur l'application en utilisant la register_blueprint
fonction - cela «impressionne» le moule du plan sur l'application aux emplacements spécifiés par url_prefix
.
oak/leaves
etfir\leaves
pointera vers le même code? Aussi, quel est le but de la chaînemold
dansBlueprint("mold", __name__)
oak/leaves
etfir/leaves
seront gérés pardef leaves
."mold"
est le nom du plan et est utilisé pour clarifier les ambiguïtés en se référant aux routes (par exemplesomeBlueprint.routeName
vs.anotherBlueprint.routeName
).url_prefix
à la fonction? Dites, pour vérifier si c'est du chêne ou du sapin?tree_mold.url_prefix
me donne unNone
url_for('.relative_route_name')
(notez le point de début ). Par exemple,url_for('.roots')
fournira automatiquement une URL correctement étendue à chacun des points montés.Comme souligné dans un commentaire de @Devasish , cet article apporte une bonne réponse:
http://exploreflask.com/en/latest/blueprints.html
Citant l'article:
C'est une très bonne interprétation, en particulier la partie "si Facebook a utilisé Flask". Cela nous donne une situation concrète pour visualiser comment Blueprint fonctionne réellement.
la source
Moi aussi, je suis tombé dessus moi-même et j'étais confus après avoir lu quelques-unes des sources de documentation. Au début, je pensais que c'était comme le style d'implémentation C # / Java où vous définissez certaines choses mais que vous n'avez pas à vous soucier de le définir plus tard. Cependant, je suis tombé sur cette page qui la met en termes très très profanes (et assez hilarants sur les événements actuels). https://hackersandslackers.com/flask-blueprints/
Essentiellement, un avantage mentionné dans le lien et qui me donne une idée claire de son utilisation dans le monde réel est que je peux efficacement organiser / diviser logiquement l'application en plusieurs parties qui ne doivent se préoccuper que de ses propres affaires. Donc, il fournit une encapsulation conçue.
Edit: Je l'utilise actuellement pour segmenter le code de mes applications Web. C'était également une bonne décision car j'ai trouvé que le concepteur principal voulait créer l'interface dans Vue.js. Ce que je n'ai pas encore utilisé, mais en regardant ses fichiers de projet, cela semblerait beaucoup plus compliqué et fournirait probablement de nombreux noms sujets aux collisions.
la source
Pour les projets plus importants, tout votre code ne doit pas être dans le même fichier. Au lieu de cela, vous pouvez segmenter ou diviser des codes plus gros dans un fichier séparé, principalement basé sur la fonctionnalité. Comme des briques formant un mur.
J'espère que cela a aidé. Puisqu'il s'agit d'une question théorique, n'afficher aucun code.
la source