Атрибут subdomain
Атрибут subdomain применяется к объекту
Blueprint и указывает поддомен, к которому
привязываются все маршруты этого блюпринта.
Значением атрибута выступает строка с именем
поддомена. Если атрибут не задан, маршруты
блюпринта доступны на основном домене приложения.
Для работы поддоменов в конфигурации приложения
необходимо задать параметр SERVER_NAME,
например 'example.com'. Тогда блюпринт
с атрибутом subdomain, равным
'admin', будет отвечать на адрес
admin.example.com.
Синтаксис
bp = Blueprint(name, import_name, subdomain='sub')
Пример
Давайте создадим блюпринт с поддоменом
'admin' и повесим на него один маршрут:
from flask import Flask, Blueprint
app = Flask(__name__)
app.config['SERVER_NAME'] = 'example.com'
bp = Blueprint('admin', __name__, subdomain='admin')
@bp.route('/')
def index():
return 'hello'
app.register_blueprint(bp)
Результат выполнения кода для адреса
admin.example.com:
hello
Пример
Давайте создадим два блюпринта с разными поддоменами и зарегистрируем их в приложении:
from flask import Flask, Blueprint
app = Flask(__name__)
app.config['SERVER_NAME'] = 'example.com'
bp1 = Blueprint('user', __name__, subdomain='user')
bp2 = Blueprint('admin', __name__, subdomain='admin')
@bp1.route('/')
def user_index():
return 'user page'
@bp2.route('/')
def admin_index():
return 'admin page'
app.register_blueprint(bp1)
app.register_blueprint(bp2)
Результат выполнения кода для адреса
user.example.com:
user page
Результат выполнения кода для адреса
admin.example.com:
admin page
Пример
Давайте используем динамический поддомен, в котором часть имени поддомена принимается как параметр:
from flask import Flask, Blueprint
app = Flask(__name__)
app.config['SERVER_NAME'] = 'example.com'
bp = Blueprint('user', __name__, subdomain='<username>')
@bp.route('/')
def index(username):
return username
app.register_blueprint(bp)
Результат выполнения кода для адреса
abcde.example.com:
abcde
Смотрите также
-
класс
Blueprint,
который создаёт блюпринт приложения -
атрибут
url_prefix,
который задаёт префикс URL для блюпринта -
метод
route,
который регистрирует маршрут блюпринта -
метод
register,
который регистрирует блюпринт в приложении