如何将参数传递给装饰器中的函数
How to pass parameters to function in decorator
我有一个装饰器,想让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)
# ...
我有一个装饰器,想让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)
# ...