Flasche: aktuelle Route erhalten

In Flasche, wenn ich mehrere Routen für die gleiche Funktion habe, wie kann ich wissen, welche Route im Moment verwendet wird?

Beispielsweise:

@app.route("/antitop/") @app.route("/top/") @requires_auth def show_top(): .... 

Wie kann ich wissen, dass ich jetzt mit /top/ or /antitop/ ?

AKTUALISIEREN

Ich weiß über request_path Ich will es nicht verwenden, denn die Anfrage kann ziemlich komplex sein, und ich möchte die Routing-Logik in der Funktion wiederholen. Ich denke, dass die Lösung mit url_rule es das Beste ist.

5 Solutions collect form web for “Flasche: aktuelle Route erhalten”

Die meisten 'flasky' Weg zu überprüfen, welche Route ausgelöst wurde Ihre Ansicht ist, durch request.url_rule .

 rule = request.url_rule if 'antitop' in rule.rule: # request by '/antitop' elif 'top' in rule.rule: # request by '/top' 

Verwenden request.path einfach request.path .

 from flask import request ... @app.route("/antitop/") @app.route("/top/") @requires_auth def show_top(): ... request.path ... 

Eine weitere Möglichkeit ist die Verwendung der Endpunktvariablen:

 @app.route("/api/v1/generate_data", methods=['POST'], endpoint='v1') @app.route("/api/v2/generate_data", methods=['POST'], endpoint='v2') def generate_data(): version = request.endpoint return version 

Wenn du auf jeder Strecke unterschiedliches Verhalten wünschst, ist das richtige zu tun, um zwei Funktionshandler zu erstellen.

 @app.route("/antitop/") @requires_auth def top(): ... @app.route("/top/") @requires_auth def anti_top(): ... 

In einigen Fällen ist Ihre Struktur sinnvoll. Sie können Werte pro Route festlegen.

 @app.route("/antitop/", defaults={'_route': 'antitop'}) @app.route("/top/", defaults={'_route': 'top'}) @requires_auth def show_top(_route): # use _route here ... 

Es scheint mir, dass, wenn Sie eine Situation haben, wo es zählt, sollten Sie nicht die gleiche Funktion in erster Linie verwenden. Teilen Sie es in zwei separate Handler, die jeweils eine gemeinsame Fiktion für den gemeinsamen Code aufrufen.

  • Wie benutzt man Django, um den Namen für den Host-Server zu erhalten?
  • Gibt es einen besseren Weg, um diese URL Manipulation in Python zu schreiben?
  • Wie kann ich einen URL-String in einzelne Teile in Python aufteilen?
  • Tornado nächster Abfrage-String URL-Parameter
  • URLs, die in der Datenbank für Django-Website gespeichert sind
  • OSX: Definieren eines neuen URL-Handlers, der gerade auf ein Python-Skript zeigt
  • Python: URL-Pfadabschnitte abrufen
  • ./xx.py: Zeile 1: Import: Befehl nicht gefunden
  • Erhalten eines gefangenen NoReverseMatch Fehlers in django
  • Wie bekomme ich HTML-Tags aus der URL?
  • Django bekommen url Pfad ohne Verwendung "request.path"
  • Python ist die beste Programmiersprache der Welt.