gpt4 book ai didi

Flask:如何存储和检索绑定(bind)到请求的值

转载 作者:行者123 更新时间:2023-12-03 15:33:08 25 4
gpt4 key购买 nike

我想存储一个绑定(bind)到 Flask 请求的值,
我希望值(value)只在请求时存在,并且它
应该在@app.after_request 中可用,
如何实现 get_my_request_var 和 set_my_request_var
在下面的代码中?

@app.route("/aRoute")
def a_function():
set_my_request_var('aName', request, 123)


@app.after_request
def per_request_callbacks(response):

v = get_my_request_var('aName', request)

return response

最佳答案

我会在 flask.g globals object 上设置一个值并在 after_request 中检索它处理程序:

def set_my_request_var(name, value):
if 'my_request_var' not in g:
g.my_request_var = {}
g.my_request_var[name] = value


@app.after_request
def per_request_callbacks(response):
values = g.get('my_request_var', {})
v = values.pop('aName')

return response


@app.route("/aRoute")
def a_function():
set_my_request_var('aName', 123)
values.pop()my_request_var 中删除 key 全局词典 flask.g上下文,以便将来的请求不必处理它。

全局 flask.g上下文是线程安全的并且与当前请求相关联;引自 documentation :

The application context is created and destroyed as necessary. It never moves between threads and it will not be shared between requests.



另一种选择是不在 after_request 中处理此问题。处理程序。使用较新的 @flask.after_this_request() decorator而是为这个请求注册一个回调:
from flask import after_this_request


@app.route("/aRoute")
def a_function():
aName = 123

@after_this_request
def this_request_callback(response)
# do something with `aName` here
return response

或者,在辅助函数中:
def something_after_this_request(aName):
@after_this_request
def this_request_callback(response)
# do something with `aName` here
return response


@app.route("/aRoute")
def a_function():
something_after_this_request(123)

关于Flask:如何存储和检索绑定(bind)到请求的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22256862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com