2016-11-26 3 views
3

Мне нужно, чтобы в этом проекте были разрешены две поддомены. В этом случае pt и br. Как я могу это сделать? Насколько я знаю, у меня может быть только параметр поддомена. Я хочу использовать эту функцию для обоих языков [pt и br].Несколько поддоменов разрешены в одном и том же плане

mod = Blueprint('landing', __name__, url_prefix='/', subdomain='pt') 

@mod.route('/', methods=['GET']) 
def index(): 
    pass 

Я хочу, чтобы избежать dynamic поддоменов, потому что я не хочу, чтобы изменить всю мою url_for().

ответ

5

Не определить префикс 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, думая, что это другой план.

Предложения приветствуются, чтобы улучшить этот грязный обходной путь.

+0

это вызовет огромные проблемы. Порядок регистрации нарушит все ссылки из-за префикса. Всегда принимайте ссылку с префиксом зарегистрированного первого поддомена. Я буду использовать конфигурационный файл для каждой виртуальной машины и решить эту проблему. – anvd

+0

@andv Я думаю, что понимаю, в чем проблема. Первый зарегистрированный субдомен имеет приоритет при использовании url_for. Я только что отредактировал ответ с обходным решением этой проблемы. Надеюсь, поможет. – AArias