zoukankan      html  css  js  c++  java
  • Flask cbv

    Flask的CBV写法

    基础版

    from flask import Flask,views
    app = Flask(__name__)
    app.debug = True
    
    def auth(func):
        def inner(*args,**kwargs):
            print('before...')
            res = func(*args,**kwargs)
            print('after...')
            return res
        return inner
    
    class IndexView(views.View):
        methods = ["GET","POST"]
        decorators = [auth,]  # 这个是给外面的响应添加装饰器
        # 这里名字必须是dispatch_request
        def dispatch_request(self):
            # print("ojbk")
            return "ojbk"
    
    # 如果是cbv 路由必须用app.add_url_rule的方式写,这里的name和endpoint一样
    # 如果as_view不传name,这所有返回的都是view函数对象,这样就会报错,所有人家必须要你传递参数
    # 我们传递name="index"是给view的__name__改变名字。如果不传,我没有办法通过名字来找路由的映射关系,因为都是”view“
    app.add_url_rule("/index",view_func=IndexView.as_view(name="index"))
    
    if __name__ == '__main__':
        app.run()

    常用版

    from flask import Flask,views
    
    app = Flask(__name__)
    def auth(func):
        def inner(*args,**kwargs):
            print('before...')
            res = func(*args,**kwargs)
            print('after...')
            return res
        return inner
    
    class Login(views.MethodView):
        methods = ["GET","POST"]  # 规定哪些请求方式可以请求我这个路由
        decorators = [auth, ]  #这个是给外面的响应添加装饰器
        def get(self):return "get"
        def post(self):
            return "post"
    
    app.add_url_rule("/login",view_func=Login.as_view(name="login"))
    # 如果我们继承了MethodView,他帮我们重写了dispatch_request方法,他给我们做了一个分发,通过请求,来执行不同的函数
    
    if __name__ == '__main__':
        app.run()
  • 相关阅读:
    python闭包和装饰器
    Redis订阅与发布
    Redis压缩列表
    Linux操作系统--定时任务
    python模块--zipfile文件压缩
    Xshell工具使用--连接VMware虚拟机
    Django数据库--事务及事务回滚
    HTTP长连接--Keep-Alive
    MySQL触发器
    Kasaraju算法--强连通图遍历及其python实现
  • 原文地址:https://www.cnblogs.com/baohanblog/p/12527986.html
Copyright © 2011-2022 走看看