Не определить префикс Blueprint в и поддомен, где вы делаете это в настоящее время, определить его следующим образом:
mod = Blueprint('landing', __name__)
Затем просто зарегистрировать светокопию два раза, один для каждого поддомена:
app.register_blueprint(mod, subdomain='pt', url_prefix='/')
app.register_blueprint(mod, subdomain='br', url_prefix='/')
РЕДАКТИРОВАТЬ:
проблемы с данным решением, как заявлен ОП, является то, что первым зарегистрированным б lueprint будет иметь приоритет при использовании url_for
в шаблонах.
Быстрый обходной путь может делать что-то вроде этого при регистрации:
app.register_blueprint(mod, subdomain='br')
mod.name = 'landing_pt'
app.register_blueprint(mod, subdomain='pt')
Обратите внимание, что порядок это делается с помощью важен (первый регистр один, а затем изменить имя, а затем зарегистрировать другую).
Тогда для url_for
работать, как ожидалось с обеих подобластей, важно использовать relative redirectsurl_for('.index')
как вместо url_for('landing.index')
.
Изменяя название чертежа для второй регистрации, мы обманываем Flask, думая, что это другой план.
Предложения приветствуются, чтобы улучшить этот грязный обходной путь.
это вызовет огромные проблемы. Порядок регистрации нарушит все ссылки из-за префикса. Всегда принимайте ссылку с префиксом зарегистрированного первого поддомена. Я буду использовать конфигурационный файл для каждой виртуальной машины и решить эту проблему. – anvd
@andv Я думаю, что понимаю, в чем проблема. Первый зарегистрированный субдомен имеет приоритет при использовании url_for. Я только что отредактировал ответ с обходным решением этой проблемы. Надеюсь, поможет. – AArias