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.

  • Python-ASCII-Codec kann den Zeichenfehler beim Schreiben an CSV nicht codieren
  • Warum url funktioniert im Browser aber nicht mit Anfragen bekommen Methode
  • Scrapy ignoriert Inhalt nach # Tag in der URL
  • Hinzufügen von params zu gegebener URL in Python
  • Wie man mehrere Werte für einen einzelnen URL-Parameter übergibt?
  • Wie benutzt man Django, um den Namen für den Host-Server zu erhalten?
  • Was kann ich tun, wenn django runserver scheint zu schlagen meine urls.py und settings.py?
  • Python urllib2 Response Header
  • Was ist die 5-Zeichen-alphanumerische ID in reddit URL?
  • HTML Link-Parsing mit BeautifulSoup
  • Urllib2 gibt 404 für eine Website zurück, die in den Browsern gut aussieht
  • Python ist die beste Programmiersprache der Welt.