zoukankan      html  css  js  c++  java
  • 二十五:视图之类视图中使用装饰器

    对于url的保护,一般是通过装饰器实现,如:某个页面需要登录后才能访问

    函数视图实现

    from flask import Flask, render_template, request
    from functools import wraps
    app = Flask(__name__)
    def login_required(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
    username = request.args.get('username')
    return func(*args, **kwargs) if username == 'aaa' else '请先登录'
    return wrapper
    @app.route('/setting/')
    @login_required
    def setting():
    return '设置页'

    类视图实现
    类视图中的装饰器,需要重写类视图的一个类属性:decorators,这个列属性是列表或者元祖都可以,需要用多个装饰器时,按执行顺序放进去就行,会按里面的装饰器顺序执行,View中源码如下

    如:以上面那个案例修改

    from flask import Flask, render_template, request, views
    from functools import wraps
    app = Flask(__name__)
    def login_required(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
    username = request.args.get('username')
    return func(*args, **kwargs) if username == 'aaa' else '请先登录'
    return wrapper
    class Setting(views.View):
    decorators = [login_required] # 将自己实现的装饰器放在decorators的列表中即可,decorators为flask.views.View下定义的属性
    def dispatch_request(self):
    return '设置页'
    app.add_url_rule('/setting/', view_func=Setting.as_view('setting'))
  • 相关阅读:
    基于VIP的keepalived高可用架构
    高性能Nginx最佳实践
    Ubuntu安装Nginx
    Synchronized总结及底层原理分析#网易微专业# #Java#
    springboot Restful开发
    Volatile详解
    IOC知识点详细汇总
    python 一个函数让你决定你的二维码
    用python批量生成简单的xml文档
    基于tensorflow搭建一个神经网络
  • 原文地址:https://www.cnblogs.com/zhongyehai/p/11795649.html
Copyright © 2011-2022 走看看