如何将参数传递给装饰器中的功能

pcymichael:

我有一个装饰员,想让它newname通过protected()并显示,该怎么办?

如果name='Jan'在装饰器中newnameJan hello!!!and 相等,则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!'})

伊万(Ivan Velichko):

您可以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)
    # ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章