Приложение Flask, которое маршрутизирует на основе поддомена
Я хочу иметь свой домен верхнего уровня в качестве портала для различных поддоменов, которые соответствуют различным разделам моего сайта. example.com
должен маршрут до welcome.html
шаблон. eggs.example.com
следует направить в подраздел" яйца " или приложение сайта. Как я добьюсь этого во фляжке?
1 ответов
@app.route()
принимает subdomain
аргумент, чтобы указать, какой поддомен соответствует маршруту. Blueprint
занимает subdomain
аргумент для установки соответствия поддоменов для всех маршрутов в схеме.
необходимо указать app.config['SERVER_NAME']
к базовому домену, чтобы колба знала, с чем сравнивать.
начиная с колбы 1.0 вы также должны установить subdomain_matching=True
при создании объекта приложения.
from flask import Flask
app = Flask(__name__, subdomain_matching=True)
app.config['SERVER_NAME'] = "example.com"
@app.route("/")
def index():
return "example.com"
@app.route("/", subdomain="eggs")
def egg_index():
return "eggs.example.com"
ham = Blueprint("ham", __name__, subdomain="ham")
@ham.route("/")
def index():
return "ham.example.com"
app.register_blueprint(ham)
при локальном запуске вам необходимо редактировать файл "hosts" вашего компьютера (/etc/hosts
в Unix), чтобы он знал, как маршрутизировать поддомены, поскольку Домены фактически не существуют локально.
127.0.0.1 localhost example.com eggs.example.com ham.example.com
не забудьте указать порт в браузере,http://example.com:5000
, http://eggs.example.com:5000
, etc.
аналогично, при развертывании на производстве вам нужно настроить DNS так, чтобы поддомены маршрутизировались на тот же хост, что и базовое имя, и настроить веб-сервер для маршрутизации всех этих имен на приложение.
помните, что все маршруты колбы действительно являются экземплярами werkzeug.routing.Rule
. Консультации документация Werkzeug для Rule
покажет вам довольно много вещей, которые маршруты могут сделать, что документация колбы глоссы (так как она уже хорошо документирована Werkzeug).