代码:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return "<h2> Hello, world </h2>"
@app.after_request
def after(response)
print('after request')
return response
if __name__ == "__main__":
app.run(debug=True)
终端输出:
Serving Flask app "test" (lazy loading)
Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
Debug mode: on
Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Restarting with stat
Debugger is active!
after request
127.0.0.1 - - [22/Aug/2020 14:31:07] "GET / HTTP/1.1" 200 -
我正在学习 Flask,对网络编程完全陌生。我的问题是不应该在 GET 请求之后打印“请求后”。你能指出我哪里出错了吗?我应该如何解释结果?
我遇到了
app.debug = False
(和 True
)的问题,并且没有任何插件。每个请求都会调用 @app.before_request
和 @app.after_request
修饰函数两次。请求函数本身(在您的情况下为index()
)仅被调用一次。
@app.before_request
和@app.after_request
装饰函数都与app = Flask(__name__)
、app.run(...)
和一些app.errorhandler
装饰函数位于同一个文件中(我不知道哪一个导致了混乱)。
我将
@app.before_request
和 @app.after_request
装饰函数移动到另一个文件,导入该文件并且它起作用了!这两个函数现在每个请求仅调用一次