Sie den Bauplan des Präfix und Sub-Domain nicht definieren, wo Sie es derzeit tun, definiert es wie so:
mod = Blueprint('landing', __name__)
Dann einfach den Bauplan zweimal registrieren, eine für jede Sub-Domain:
app.register_blueprint(mod, subdomain='pt', url_prefix='/')
app.register_blueprint(mod, subdomain='br', url_prefix='/')
EDIT:
Das Problem bei der Lösung gegeben, wie durch OP angegeben ist, ist, dass die erste registrierte b Lueprint hat Priorität bei der Verwendung von url_for
in Vorlagen.
Eine schnelle Abhilfe könnte so etwas wie dies tut bei der Registrierung:
app.register_blueprint(mod, subdomain='br')
mod.name = 'landing_pt'
app.register_blueprint(mod, subdomain='pt')
Beachten Sie, dass die Reihenfolge dieses wichtigen erfolgt ist (erstes Register, dann den Namen ändern, dann die andere Register).
Dann wird für url_for
wie bei den beiden Sub-Domains erwartet zu arbeiten, ist es wichtig, relative redirects wie url_for('.index')
statt url_for('landing.index')
zu verwenden.
Indem wir den Namen des Blueprints für die zweite Registrierung ändern, machen wir Flask zu der Annahme, dass es sich um einen anderen Blueprint handelt.
Vorschläge begrüßen diese Art von dreckigen Workaround besser.
Dies wird eine große Anzahl von Problemen verursachen. Die Reihenfolge der Registrierung bricht alle Links aufgrund des Präfixes. Nehmen Sie immer die Verknüpfung mit dem Präfix der ersten registrierten Subdomain an. Ich werde eine Konfigurationsdatei pro VM verwenden und dieses Problem lösen. – anvd
@andv Ich glaube ich verstehe, was dein Problem ist. Die erste registrierte Subdomain hat Priorität bei der Verwendung von url_for. Ich habe gerade die Antwort mit einer Problemumgehung für dieses Problem bearbeitet. Ich hoffe es hilft. – AArias