Blueprint to szablon do generowania „sekcji” aplikacji internetowej. Możesz myśleć o tym jak o pleśni:
Możesz wziąć schemat i zastosować go do swojej aplikacji w kilku miejscach. Za każdym razem, gdy go zastosujesz, projekt stworzy nową wersję swojej struktury w tynku twojej aplikacji.
# 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)
To prosta forma do pracy z drzewami - mówi, że każda aplikacja zajmująca się drzewami powinna zapewniać dostęp do jego liści, korzeni i słojów (według roku). Sam w sobie jest pustą skorupą - nie może kierować, nie może odpowiedzieć, dopóki nie zostanie wyciśnięty na aplikacji:
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")
Po utworzeniu można go „odcisnąć” na aplikacji za pomocą register_blueprint
funkcji - to „odciska” formę projektu na aplikacji w miejscach określonych przez url_prefix
.
oak/leaves
ifir\leaves
będzie wskazywać ten sam kod? Ponadto, jaki jest cel ciągu znakówmold
wBlueprint("mold", __name__)
oak/leaves
ifir/leaves
będą obsługiwane przezdef leaves
."mold"
to nazwa planu i służy do ujednoznacznienia w odniesieniu do tras (np.someBlueprint.routeName
vs.anotherBlueprint.routeName
).url_prefix
do funkcji? Powiedz, żeby sprawdzić, czy to dąb czy jodła?tree_mold.url_prefix
daje miNone
url_for('.relative_route_name')
(zwróć uwagę na wiodącą kropkę). Na przykładurl_for('.roots')
automatycznie zapewni prawidłowy zakres adresu URL w każdym z zamontowanych punktów.Jak wskazał w komentarzu @Devasish , ten artykuł zawiera dobrą odpowiedź:
http://exploreflask.com/en/latest/blueprints.html
Cytując z artykułu:
To bardzo dobra interpretacja, zwłaszcza fragment „czy Facebook użył Flaska”. Daje nam konkretną sytuację do wizualizacji, jak faktycznie działa Blueprint.
źródło
Ja też po prostu natknąłem się na to i po przeczytaniu kilku źródeł dokumentacji byłem zdezorientowany. Na początku myślałem, że jest to styl implementacji C # / Java, w którym definiujesz pewne rzeczy, ale nie musisz się o to martwić, definiując je aż do później. Jednak natknąłem się na tę stronę, która przedstawia ją w bardzo laickich terminach (i dość zabawnych wydarzeniach dnia dzisiejszego). https://hackersandslackers.com/flask-blueprints/
Zasadniczo jedną korzyścią, o której wspomina się w linku i która zapewnia mi jasny obraz jej użycia w świecie rzeczywistym, jest to, że mogę efektywnie logicznie organizować / dzielić aplikację na kilka części, które muszą zajmować się tylko własnymi sprawami. Zapewnia więc zaprojektowaną hermetyzację.
Edycja: Obecnie używam go do segmentowania kodu moich aplikacji internetowych. To była również dobra decyzja, ponieważ odkryłem, że główny projektant chce zrobić frontend w Vue.js. Którego jeszcze nie użyłem, ale patrząc na pliki projektu, wyglądałoby to na znacznie bardziej niechlujne i prawdopodobnie zapewniłoby wiele podatnych na kolizje nazw.
źródło
W przypadku większych projektów cały kod nie powinien znajdować się w tym samym pliku. Zamiast tego możesz segmentować lub dzielić większe kody w osobny plik, głównie na podstawie funkcjonalności. Jak cegły tworzące ścianę.
Mam nadzieję, że to pomogło. Ponieważ jest to pytanie teoretyczne, nie wysyłaj żadnych kodów.
źródło