2016-11-26 2 views
3

この青写真には2つのサブドメインが必要です。この場合、ptとbr。どうやってやるの?限り、私は知っている、私はサブドメインのパラメータを持つことができます。私は両方の言語[ptとbr]のこの機能を使いたいです。複数のサブドメインを同じ青写真に入れることができます

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

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

私はすべての私のurl_for()を変更したくないので、dynamicサブドメインを避けたいです。

答えて

5

ので、同じようにそれを定義し、あなたは現在、それをやっている青写真の接頭辞とサブドメインを定義しないでください:

app.register_blueprint(mod, subdomain='pt', url_prefix='/') 
app.register_blueprint(mod, subdomain='br', url_prefix='/') 

mod = Blueprint('landing', __name__) 

その後、単純に各サブドメインのための青写真を2回、1を登録

EDIT:OPによって述べたよう

所与の解決策の問題、すなわち、最初に登録Bでありますテンプレートでurl_forを使用すると、lueprintが優先されます。登録時に

迅速な回避策は、このような何かをやっている可能性が:これはで行われる順序が重要であることを

app.register_blueprint(mod, subdomain='br') 
mod.name = 'landing_pt'  
app.register_blueprint(mod, subdomain='pt') 

注意を(最初に、他のものを登録し、名前を変更し、1を登録します)。

url_forが両方のサブドメインで期待通りに機能するためには、url_for('landing.index')の代わりにurl_for('.index')のようにrelative redirectsを使用することが重要です。

2回目の登録の青写真の名前を変更することで、Flaskは違う青写真であると考えてトリックします。

このような汚れた回避策をお勧めします。

+0

これは膨大な数の問題を引き起こします。登録の順序は、接頭辞によるすべてのリンクを解除します。登録された最初のサブドメインの接頭辞を持つリンクを常に仮定します。 VMごとに設定ファイルを使用してこの問題を解決します。 – anvd

+0

@andvあなたの問題が何かを理解していると思います。 url_forを使用すると、最初に登録されたサブドメインが優先されます。私はこの問題の回避策を使って答えを編集しました。それが役に立てば幸い。 – AArias

関連する問題