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()
  • 相关阅读:
    c++ 动态生成string类型的数组
    c++ string类型的定义及方法
    c++数字和字符串的转换
    c++ 怎么输出保留2位小数的浮点数
    c++中结构体sort()排序
    O(N)时间的排序
    复杂链表的复制
    反转链表
    判断是否为平衡二叉树
    学习笔记_过滤器详细_2(过滤器JavaWeb三大组件之一)
  • 原文地址:https://www.cnblogs.com/baohanblog/p/12527986.html
Copyright © 2011-2022 走看看