python - 如何将参数传递给装饰器中的函数
问题描述
我有一个装饰师,想让newname
传给 protected()
展示,我该怎么办?
if name='Jan'
and 在装饰器中newname
等于Jan hello!!!
and thennewname
可以 print(newname)
用在protected()
我的代码
应用程序.py
@app.route('/protected')
@lookname
def protected():
return jsonify({'message': 'This is only available for people with valid tokens!'})
外观名称.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)
# ...
推荐阅读
- json - 在表行中聚合 JSON 数组/将格式函数应用于 postgres JSON 列
- r - 如何使用 R 中的姓名、性别、种族和粗略估计的年龄跨大型数据集进行匹配
- grafana - Grafana - 如何在没有 Grafana 企业版的情况下识别和删除未使用/未查看的仪表板
- android - android jdk1.8 -> jdk11 : APK 体积变大
- pytest - pytest:在夹具中检测 -m“not my_mark”
- html - 如何使用 Kable 可滚动表阻止第一列和第一行?
- fingerprint - 我怎么知道一个网站是否通过 WebGL 对你进行指纹识别
- php - “请求的未知参数”数据表错误将数据从 PHP 传递到 JS
- javascript - 第一次访问组件时 Location.state 未定义?
- variables - 如何为 VS 代码片段定义和使用自定义变量