Проект - это шаблон для создания «раздела» веб-приложения. Вы можете думать об этом как о плесени:
Вы можете взять план и применить его к вашему приложению в нескольких местах. Каждый раз, когда вы применяете его, план создаст новую версию своей структуры в гипсе вашего приложения.
# 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)
Это простая форма для работы с деревьями - она говорит, что любое приложение, которое имеет дело с деревьями, должно обеспечивать доступ к его листьям, корням и кольцам (по годам). Само по себе это полая оболочка - она не может маршрутизировать, она не может отвечать, пока не произойдет впечатление на приложение:
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")
После создания он может быть «впечатлен» в приложении с помощью register_blueprint
функции - это «впечатляет» шаблон проекта в приложениях в местах, указанных url_prefix
.
oak/leaves
иfir\leaves
будет указывать тот же код? Кроме того, какова цель строкиmold
вBlueprint("mold", __name__)
oak/leaves
и другоеfir/leaves
будет обработаноdef leaves
."mold"
это имя проекта и используется для устранения неоднозначности при обращении к маршрутам (например,someBlueprint.routeName
противanotherBlueprint.routeName
).url_prefix
к функции? Скажем, проверить, дуб это или пихта?tree_mold.url_prefix
дает мнеNone
url_for('.relative_route_name')
(обратите внимание на начальную точку). Например,url_for('.roots')
автоматически предоставит правильно заданный URL-адрес в каждой точке подключения.Как указано в комментарии @Devasish , эта статья дает хороший ответ:
http://exploreflask.com/en/latest/blueprints.html
Цитата из статьи:
Это очень хорошая интерпретация, особенно часть «если Facebook использовал Flask». Это дает нам конкретную ситуацию для визуализации того, как на самом деле работает Blueprint.
источник
Я тоже просто наткнулся на это сам и запутался после прочтения нескольких источников документации. Сначала я подумал, что это похоже на стиль реализации C # / Java, где вы определяете некоторые вещи, но вам не нужно беспокоиться об этом, определяя их до тех пор, пока они не появятся. Тем не менее, я наткнулся на эту страницу, которая описывает ее очень мирянно (и довольно весело в наши дни).https://hackersandslackers.com/flask-blueprints/
По существу одно преимущество, которое упомянуто в ссылке и дает мне четкое представление об использовании в реальном мире, заключается в том, что я могу эффективно логически организовать / разделить приложение на несколько частей, которые должны быть связаны только с его собственными делами. Таким образом, он обеспечивает некоторую разработанную инкапсуляцию.
Изменить: в настоящее время я использую его, чтобы сегментировать мой код веб-приложений. Это было также хорошее решение, потому что я нашел, что ведущий дизайнер хочет сделать фронтенд в Vue.js. То, что я еще не использовал, но, глядя на его файлы проекта, выглядело бы намного более грязным и, вероятно, обеспечило бы множество склонностей к именованию.
источник
Для больших проектов весь ваш код не должен быть в одном файле. Вместо этого вы можете сегментировать или разбивать большие коды в отдельный файл, в основном на основе функциональности. Как кирпичи, образующие стену.
Надеюсь, это помогло. Поскольку это теоретический вопрос, выкладывать без кодов.
источник