Um blueprint é um modelo para gerar uma "seção" de um aplicativo da web. Você pode pensar nisso como um molde:
Você pode pegar o modelo e aplicá-lo ao seu aplicativo em vários lugares. Cada vez que você o aplica, o blueprint cria uma nova versão de sua estrutura no reboco do seu aplicativo.
# 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)
Esse é um molde simples para trabalhar com árvores - diz que qualquer aplicativo que lide com árvores deve fornecer acesso a suas folhas, raízes e anéis (por ano). Por si só, é uma concha oca - não pode rotear, não pode responder até que seja impressa em um aplicativo:
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")
Uma vez criado, ele pode ser "impresso" no aplicativo usando a register_blueprint
função - isso "impressiona" o molde do blueprint no aplicativo nos locais especificados por url_prefix
.
oak/leaves
efir\leaves
apontará para o mesmo código? Além disso, qual é o propósito da cordamold
emBlueprint("mold", __name__)
oak/leaves
efir/leaves
serão tratados pordef leaves
."mold"
é o nome do blueprint e é usado para desambiguação quando se refere a rotas (por exemplo,someBlueprint.routeName
vs.anotherBlueprint.routeName
).url_prefix
na função? Diga, para verificar se é carvalho ou abeto?tree_mold.url_prefix
me dá um #None
url_for('.relative_route_name')
(observe o ponto à esquerda). Por exemplo,url_for('.roots')
fornecerá uma URL com escopo correto em cada um dos pontos montados automaticamente.Como apontado em um comentário de @Devasish , este artigo fornece uma boa resposta:
http://exploreflask.com/en/latest/blueprints.html
Citando o artigo:
Esta é uma interpretação muito boa, especialmente a parte "se o Facebook usou o Flask". Isso nos dá uma situação concreta para visualizar como o Blueprint realmente funciona.
fonte
Eu também me deparei com isso e fiquei confuso depois de ler algumas das fontes de documentação. No começo, eu pensei que era como o estilo de implementação C # / Java, onde você define algumas coisas, mas não precisa se preocupar em defini-lo até mais tarde. No entanto, eu tropecei nesta página, que a coloca em termos muito leigos (e hilariantes eventos atuais).https://hackersandslackers.com/flask-blueprints/
Essencialmente, um benefício mencionado no link e que me fornece uma idéia clara do uso no mundo real é que eu posso efetivamente organizar / dividir logicamente o aplicativo em várias partes que precisam apenas se preocupar com seus próprios assuntos. Portanto, ele fornece algum encapsulamento projetado.
Editar: atualmente estou usando para segmentar meu código de aplicativos da web. Também foi uma boa decisão, porque achei que o designer-chefe quer fazer a interface no Vue.js. O qual eu ainda não usei, mas analisar os arquivos do projeto pareceria muito mais confuso e provavelmente forneceria muitas propensões a colisões de nomes.
fonte
Para projetos maiores, todo o seu código não deve estar no mesmo arquivo. Em vez disso, você pode segmentar ou dividir códigos maiores em arquivos separados, principalmente com base na funcionalidade. Como tijolos formando uma parede.
Espero que isso tenha ajudado. Por se tratar de uma questão teórica, não há códigos.
fonte