Verwenden von Flask Blueprints, um zu verhindern, dass url_for bricht, wenn eine Subdomain angegeben wird?

8

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')

aufgerufen

Wie 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 Ссылка :

  

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:

%Vor%

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:)

    
chrickso 10.05.2012, 21:35
quelle

3 Antworten

13

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.

    
Simon Sapin 27.07.2012, 19:08
quelle
9

Blaupausenname in url_for hinzufügen. Beispiel:

%Vor%
  • pay_sermepa : Blaupausename
  • sermepa_cancel : route
user2389644 16.05.2013 10:55
quelle
-3

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.

    
pyfunc 16.05.2012 22:27
quelle

Tags und Links