【问题标题】:Do I read this specific Python code properly?我是否正确阅读了这个特定的 Python 代码?
【发布时间】:2015-07-06 17:19:31
【问题描述】:

这是我正在使用的一段代码。我想确认我是否正确阅读:

def login_required(f):
    @wraps(f)
    def wrap(*args, *kwargs):
        if 'logged_in' in session:
            return f(*args, **kwargs)
        else:
            flash('You need to log in first.')
            return redirect(url_for('logging')
    return wrap

@app.route('/')
@app.route('/index')
@login_required
def index():
    return render_template('index.html',
                            title='test home title')

让我感到困惑的是f 变量。

所以Login_required() 被称为我的index() 函数的装饰器。它看起来像:

login_required(index()). 

f 变量会变成login_required(f()) 还是login_required(index(f))? 当f(*args, *kwargs) 返回时,我在login_required() 函数中感到困惑。

【问题讨论】:

    标签: python flask decorator


    【解决方案1】:

    f 变为 index。这个:

    @login_required
    def index():
        return render_template('index.html',
                                title='test home title')
    

    和这个是一样的:

    def index():
        return render_template('index.html',
                                title='test home title')
    index = login_required(index)
    

    也就是说,装饰器以被装饰的函数作为参数调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-18
      • 2012-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多