• Django中的CBV和FBV


    Django中的CBV和FBV

    一、  CBV

    CBV是采用面向对象的方法写视图文件。

    CBV的执行流程:

    浏览器向服务器端发送请求,服务器端的urls.py根据请求匹配url,找到要执行的视图类,执行dispatch方法区分出是POST请求还是GET请求,执行views.py对应类中的POST方法或GET方法。

    使用实例:

    urls.py

    path('login/',views.Login.as_view())

    views.py

    from django import views       #在views.py的基础上添加
    
    class Login(views.Views):
    
        def get(self,request)
    
             pass
    
             def pass(self,request)
    
                  pass

    使用装饰器:

    from django import views
    
    from django.utils.decorators import method_decorator
    
    def outer(func):
    
        def inner(request,*args,**kwargs):
    
            return func(request,*args,**kwargs)
    
        return inner
    
    
    
    class Login(views.View):
    
        @method_decorator(outer)
    
        def get(self,request,*args,**kwargs):
    
            pass

    在类上面加装饰器,和在函数上加装饰器是一个性质。但加的方法有所不同。

    eg:

    @method_decorator(outer,name='dispatch')
    
    class Login(views.View):
    
    

    自定义dispatch:

    class Login(views.View):
    
        def dispatch(self, request, *args, **kwargs):
    
            print(2222)
    
            ret = super(Login, self).dispatch(request, *args, **kwargs)
    
            print(1111)
    
            return ret
    def get(self, request, *args, **kwargs):
    
               print('GET')
    
               return HttpResponse('OK')
    执行结果:2222
             GET
             1111

    二、    FBV

    FBV即在views.py中以函数的形式写视图。

  • 相关阅读:
    单链表的逆转
    树的子结构和树的深度
    升级版爬楼梯问题
    蛇形数组
    正则表达式匹配
    构建乘积数组
    N皇后问题
    IOS计算文字高度
    Block的copy时机
    转:CocoaPods pod install/pod update更新慢的问题
  • 原文地址:https://www.cnblogs.com/xshan/p/8467763.html
Copyright © 2020-2023  润新知