所以我有我的用户模块的请求路由.但是现在我想从其他蓝图中访问g.users.我找到了唯一的方法,就是将下面的代码复制到每个蓝图中.
我尝试将它放在我app.py中的@ app.before_request中,但是你有错误,因为你必须导入session,g,User,然后你仍然在其他地方得到_requestglobal错误.
@app.before_request
def before_request():
g.user = None
if 'user_id' in session:
g.user = User.query.get(session['user_id']);
Run Code Online (Sandbox Code Playgroud)
什么是最好的地方?
我得到了很多:
AttributeError: '_RequestGlobals' object has no attribute 'user'
Run Code Online (Sandbox Code Playgroud)
Joh*_*ton 13
这里有点晚了但是:
这就是我所做的:
使用Blueprint变量来设置before请求
myblueprint = Blueprint('myblueprint', __name__, template_folder="templates")
def before_myblueprint():
#code here
myblueprint.before_request(before_myblueprint)
Run Code Online (Sandbox Code Playgroud)
imw*_*nxu 10
在蓝图中的每个请求之前调用Buleprint.before_request.如果您想在所有蓝图之前调用它,请使用before_app_request.
小智 5
我什至更晚到这里,但增加约翰斯顿的答案,您也可以使用相同的before_request
装饰器,例如:
bp_v1 = Blueprint('api_v1', __name__)
@bp_v1.before_request
def before_anything():
pass
Run Code Online (Sandbox Code Playgroud)