zoukankan      html  css  js  c++  java
  • FLask之视图

    视图

    1 FBV

    def index():
        return render_template('index.html')
    app.add_url_rule('/index', 'index', index)
    
    
    # 公司里一般用这种方式
    @app.route('/login')
    def login():
        return render_template('login.html')
    

    2 CBV

    from flask import Flask,render_template,views
    
    app = Flask(__name__,)
    
    # 装饰器1
    def test1(func):
        def inner(*args,**kwargs):
            print('before1')
            result = func(*args,**kwargs)
            print('after1')
            return result
        return inner
    # 装饰器2
    def test2(func):
        def inner(*args,**kwargs):
            print('before2')
            result = func(*args,**kwargs)
            print('after2')
            return result
        return inner
    
    
    class UserView(views.MethodView):
        # 指定访问方法,允许列表中的请求可以执行
        methods = ['GET',"POST"]
    	# 添加装饰器的方法,
        decorators = [test1,test2]
    
        def get(self):
            print('get')
            return 'get'
    
        def post(self):
            print('post')
            return 'post'
    
    app.add_url_rule('/user', view_func=UserView.as_view('user')) # endpoint
    
    if __name__ == '__main__':
        app.run()
        
    

    解析:

    1. 上边cbv中装饰器的执行顺序:
        before2
        before1
        get
        after1
        after2
    # 可以看出这个装饰器的加载顺序是根据你列表中写的顺序执行的;
    
    2. CBV的执行流程梳理:
    	* 首先是执行"as_view('user')"方法,这个方法继承父类"View"中的方法;
        * 然后在这个方法的执行"view"方法,这个方法的返回值是"dispatch_request"方法;
        * 这个方法在父类"MethodView"中执行的;
        * 在这个"dispatch_request"中执行反射方法,通过你的请求方法找对应的函数去执行,
        meth = getattr(self, request.method.lower(), None)
    
  • 相关阅读:
    单例模式
    dubbo环境搭建
    树莓派Zero W无键盘无屏幕初始化
    Arduino连接MPU6050陀螺仪
    Raspberry Pi3驱动Oled ssh1106屏
    SonarQube 7.7默认数据库连接方法
    解决SonarQube启动时直接挂掉问题
    解决sonar的ES无法启动问题
    Jenkins自动打包并部署(以java -jar形势运行)
    python3中OpenCV imwrite保存中文路径文件
  • 原文地址:https://www.cnblogs.com/zhufanyu/p/11937995.html
Copyright © 2011-2022 走看看