Kolben - Zugriff die Anfrage in after_request oder teardown_request

Ich möchte in der Lage sein, um Zugriff auf das request-Objekt, bevor ich wieder die Antwort der HTTP-Aufruf.
Ich möchte den Zugriff auf das request per "teardown_request" und "after_request":

from flask import Flask
...
app = Flask(__name__, instance_relative_config=True)
...

@app.before_request
def before_request():
    # do something

@app.after_request
def after_request(response):
    # get the request object somehow
    do_something_based_on_the_request_endpoint(request)

@app.teardown_request
def teardown_request(response):
    # get the request object somehow
    do_something_based_on_the_request_endpoint(request)

Sah ich, dass ich hinzufügen kann, der die Anfrage an g und tun so etwas wie dieses:

g.curr_request = request

@app.after_request
def after_request(response):
    # get the request object somehow
    do_something_based_on_the_request_endpoint(g.curr_request)

Aber die oben scheint ein bisschen seltsam. Ich bin mir sicher, dass es einen besseren Weg, um den Zugang der Anforderung.

Dank

  • Konnte Sie klären Sie Ihre Frage ein wenig durch: 1) Hinzufügen der entsprechenden import-Anweisungen 2) Was meinst du mit "ich will den Zugriff über "teardown_request" und "after_request":"
  • Ich bearbeitet die Frage. Ich möchte einige Vorgänge auf der Grundlage des ursprünglichen Anfrage vor dem senden der Antwort (in meinem Fall ich muss um einige Dinge im Zusammenhang mit der db-Transaktionen, basierend auf der Anfrage-URL,...), aber ich bin mir nicht sicher, wie Sie auf die Anfrage in "after_request" und "teardown_request"
  • Was ist falsch mit der Verwendung von g zu halten, einen Verweis auf die Anfrage, oder vielleicht besser, einfach die url oder den entsprechenden Teil der url? Da das Muster hier empfohlen zu tun das Gegenteil von dem, was Sie möchten (ändern Sie die Antwort, in der before_request () - Methode), die Verwendung von g scheint wie eine einfache und sinnvolle Lösung: flask.pocoo.org/docs/0.10/patterns/deferredcallbacks
  • Ich dachte, dass es einen besseren Weg, aber ich kann absolut g verwenden.
  • Tatsächlich - ich gedebuggt wieder und sah, dass ich eigentlich zu tun haben die Anfrage in der teardown/after_request bu mit: from flask import-Anforderung
InformationsquelleAutor Lin | 2015-01-14
Schreibe einen Kommentar