РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
260 of 643 menu

Атрибут url_prefix

Атрибут url_prefix применяется к объекту Blueprint и добавляет общий префикс ко всем маршрутам, зарегистрированным внутри этого blueprint-а. Значением атрибута является строка с путём, которая автоматически подставляется перед каждым URL blueprint-а. Атрибут можно задать при создании blueprint-а через параметр url_prefix или изменить уже после создания объекта.

По умолчанию атрибут равен None, то есть префикс не добавляется, и маршруты blueprint-а доступны по своим собственным путям.

Синтаксис

Blueprint(name, import_name, url_prefix=None)

Также атрибут можно задать после создания:

bp.url_prefix = '/prefix'

Пример

Давайте создадим blueprint с префиксом '/user' и зарегистрируем его в приложении:

from flask import Flask, Blueprint app = Flask(__name__) bp = Blueprint('user', __name__, url_prefix='/user') @bp.route('/') def index(): return 'hello' app.register_blueprint(bp)

Теперь обработчик index доступен по адресу /user/, а не по /. Результат выполнения кода для адреса /user/:

hello

Пример

Давайте зададим префикс с несколькими сегментами пути и посмотрим, как строится итоговый URL:

from flask import Flask, Blueprint app = Flask(__name__) bp = Blueprint('api', __name__, url_prefix='/api/v1') @bp.route('/user') def user(): return 'abcde' app.register_blueprint(bp)

Обработчик user доступен по адресу /api/v1/user. Результат выполнения кода:

abcde

Пример

Давайте изменим атрибут url_prefix после создания blueprint-а, но до его регистрации:

from flask import Flask, Blueprint app = Flask(__name__) bp = Blueprint('blog', __name__) bp.url_prefix = '/blog' @bp.route('/article') def article(): return 'article' app.register_blueprint(bp)

Обработчик article доступен по адресу /blog/article. Результат выполнения кода:

article

Пример

Давайте используем функцию url_for для построения URL с учётом префикса:

from flask import Flask, Blueprint, url_for app = Flask(__name__) bp = Blueprint('shop', __name__, url_prefix='/shop') @bp.route('/item') def item(): return 'item' app.register_blueprint(bp) with app.test_request_context(): res = url_for('shop.item') print(res)

Результат выполнения кода:

'/shop/item'

Смотрите также

  • класс Blueprint,
    который создаёт blueprint приложения
  • метод route,
    который регистрирует маршрут внутри blueprint-а
  • атрибут subdomain,
    который задаёт поддомен для маршрутов blueprint-а
  • метод register,
    который регистрирует blueprint в приложении
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить