如何解决如何将参数传递给装饰器中的功能
我有一个装饰器,想让newname
传递给protected()
并显示,该怎么办?
如果name='Jan'
和装饰器中的newname
等于Jan hello!!!
,则newname
可以在print(newname)
中使用protected()
我的代码
app.py
@app.route('/protected')
@lookname
def protected():
return jsonify({'message': 'This is only available for people with valid tokens!'})
lookname.py
def lookname(f):
@wraps(f)
def decorated(*args,**kwargs):
name = request.cookies.get('name')
newname = name + ' hello!!!'
return f(*args,**kwargs)
return decorated
我想要这样
@app.route('/protected')
@lookname
def protected():
print(newname)
return jsonify({'message': 'This is only available for people with valid tokens!'})
解决方法
您可以使用g
来携带绑定到请求上下文的任何信息。
from flask import g
def lookname(f):
@wraps(f)
def decorated(*args,**kwargs):
name = request.cookies.get('name')
g.newname = name + ' hello!!!'
return f(*args,**kwargs)
return decorated
然后在protected
中输入:
from flask import g
@app.route('/protected')
@lookname
def protected():
print(g.newname)
# ...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。