Python Flask - 使用装饰器设置 cookie

Ale*_*son 3 python cookies flask

我正在尝试编写一个装饰器来检查 cookie,如果它不存在则设置一个。这是我不顾一切地试图传达这个想法。

def set_cookie(f):
    def decorated_function(*args, **kws):
        if 'cstc' in flask.request.cookies.keys():
            return make_response(f).set_cookie('cstc', value='value')
        else: 
            return f
    return decorated_function

@main.route('/home')
@set_cookie
def home():
    return render_template('main/home.html')
Run Code Online (Sandbox Code Playgroud)

现在我收到错误:

TypeError: home() takes no arguments (2 given)
Run Code Online (Sandbox Code Playgroud)

Dan*_*iel 5

您必须调用原始函数:

def set_cookie(f):
    def decorated_function(*args, **kws):
        response = f(*args, **kws)
        response = make_response(response)
        if 'cstc' in flask.request.cookies.keys():
            response.set_cookie('cstc', value='value')
        return response
    return decorated_function
Run Code Online (Sandbox Code Playgroud)