这段 Flask 代码中的 g 对象是什么?
- 2025-03-17 09:12:00
- admin 原创
- 51
问题描述:
我找到了这段对每次响应进行计时的代码,但我不确定g
它应该来自哪里。它是什么g
?
@app.before_request
def before_request():
g.start = time.time()
@app.teardown_request
def teardown_request(exception=None):
diff = time.time() - g.start
print diff
解决方案 1:
g
是 Flask 提供的对象。它是一个全局命名空间,用于在单个应用程序上下文中保存所需的任何数据。例如,before_request
处理程序可以设置g.user
,这将可供路由和其他函数访问。
from flask import g
@app.before_request
def load_user():
user = User.query.get(request.session.get("user_id"))
g.user = user
@app.route("/admin")
def admin():
if g.user is None or not g.user.is_admin:
return redirect(url_for("index"))
应用程序上下文持续一个请求/响应周期,g
不适合跨请求存储数据。使用数据库、redis、会话或其他外部数据源来保存数据。
请注意,开发服务器和任何 Web 服务器都会在日志中输出时间信息。如果您确实想分析代码,可以使用Werkzeug 应用程序分析器。
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD