Ich habe die folgenden Flask-Routen und einen benutzerdefinierten Helfer:
%Vor% Ich würde erwarten, dass eine GET-Anfrage an / test etwas wie {"result":"Test success"}
zurückgibt, aber das ist nicht der Fall. Stattdessen scheint jede Anfrage der letzten Route zu entsprechen, d. H.% Co_de%. Warum?
Ich frage mich, ob dies durch einen Mangel an Isolation zwischen den verschiedenen Aufrufen von home
verursacht wird?
Vielen Dank im Voraus.
Wie Видул Петров gesagt hat, besteht die Lösung darin, functools.wraps zu verwenden:
%Vor% Der Grund dafür ist, dass das Routing-System von Flask URLs auf "Endpunkte" und dann auf Endpunkte zum Anzeigen von Funktionen ordnet. Der Endpunkt wird standardmäßig auf das Attribut __name__
der Ansichtsfunktion gesetzt. In diesem Fall wurde die dekorierte Funktion an app.route
übergeben, sodass der Endpunkt für beide Regeln create_json_response
war und die letzte für diesen Endpunkt definierte Ansicht in beiden Fällen verwendet wurde.
functools.wraps übernimmt die __name__
(und andere Attribute) von der ursprünglichen Funktion und behebt diese. Es ist immer eine gute Idee, es in dekorierten Wrapper zu verwenden.