zoukankan      html  css  js  c++  java
  • 10、Flask实战第10天:视图使用装饰器

    在实际开发中,我们有时候会用到自己定义装饰器并应用到函数视图或者类视图里面:
    比如:我们要想进入个人中心页面,首先要验证你是否登录,否则进不去,下面我们来模拟这个场景

    定义一个装饰器

    from functools import wraps
    ...
    def login_required(func):
        @wraps(func) #保持原来函数的特性
        def wrapper(*args, **kwargs ):
            # /setting/?username=heboan
            username = request.args.get('username')
            if username and username == 'heboan':
                return func(*args, **kwargs)
            else:
                return '请先登录'
        return wrapper

    函数视图应用自定义装饰器

    @app.route('/lprofile/')
    @login_required     #这个必须放在@app,route装饰器下面
    def profile():
        return render_template('profile.html')

    类视图应用自定义装饰器

    class ProfileView(views.View):
        decorators = [login_required]
        def dispatch_request(self):
            return render_template('profile.html')
    
    app.add_url_rule('/profile/', view_func=ProfileView.as_view('profile'))
  • 相关阅读:
    新汉诺塔
    车的放置
    [NOI 2015]荷马史诗
    [JSOI2008]星球大战
    分组
    星空
    [Luogu4175][CTSC2008]网络管理Network
    [Luogu2617]Dynamic Rankings(整体二分)
    2018冬令营赛前停课总结
    [BZOJ2752][HAOI2012]高速公路
  • 原文地址:https://www.cnblogs.com/sellsa/p/9248726.html
Copyright © 2011-2022 走看看