Innerhalb eines Flaschendesigns habe ich:
%Vor%und die Route zu meiner Indexfunktion ist:
%Vor%Das funktioniert gut, aber ich versuche, der Route eine Subdomain hinzuzufügen:
%Vor%Aber das bricht die App und der Browser spuckt (unter anderem) aus:
%Vor%frontend.index wird in meinem Code an einigen Stellen in url_for ('frontend.index')
aufgerufenWie kann ich erreichen, dass die URL_for funktioniert, wenn ich eine Subdomain einschließe? Das einzige, was ich in den Dokumenten finden kann und was ich für relevant halte, ist das unter Ссылка :
%Vor%Um Anwendungen zu integrieren, hat Flask einen Haken, um den URL-Build abzufangen Fehler durch Flask.build_error_handler. Die Funktion url_for ergibt sich in einem BuildError, wenn die aktuelle App keine URL für die angegebene App hat Endpunkt und Werte. Wenn dies der Fall ist, ruft current_app es auf build_error_handler, wenn es nicht None ist, die eine Zeichenfolge zurückgeben kann Verwenden Sie als Ergebnis von url_for (anstelle von url_for standardmäßig zu erhöhen die BuildError-Ausnahme) oder die Ausnahme erneut auslösen. Ein Beispiel:
Ich bin jedoch neu bei Python (und Programmierung) und kann nicht verstehen, wo ich diesen Code platzieren würde oder wie ich diese Funktion aufrufen würde, wenn ein Builder-Fehler auftritt.
Jede Einsicht würde sehr geschätzt werden:)
Um Subdomains zu verwenden, müssen Sie zunächst einen Wert für die Konfiguration von SERVER_NAME angeben:
%Vor%Sie haben eine Ansicht wie folgt:
%Vor% Um die URL zu dieser Ansicht zu rekonstruieren, benötigt Flask einen Wert für var . url_for('frontend.index')
wird fehlschlagen, da nicht genügend Werte vorhanden sind. Mit dem obigen SERVER_NAME gibt url_for('frontend.index', var='foo')
http://foo.example.net/
zurück.
Blaupausenname in url_for
hinzufügen. Beispiel:
pay_sermepa
: Blaupausename sermepa_cancel
: route Ich denke nicht, dass dies ein Problem mit Flask ist.
Sie stellen zwei Funktionen mit demselben Methodennamen bereit:
%Vor%und
%Vor%Sie sind anders verpackt, aber wenn flask.build_url aufgerufen wird, wird es wegen des überladenen Funktionsnamens geworfen. Dies scheint auf den ersten Blick falsch zu sein.
Versuchen Sie, einen anderen Funktionsnamen für den zweiten wie
anzugeben %Vor%Dies könnte Ihr Problem lösen. Ich habe es jedoch nicht getestet.