• python_django_类视图的第一次忐忑碰触!!!


      我们Django学到这里,基础知识阶段是已经完成了!!

      在我们前面接触到的视图都是基于函数的视图函数我们可以称它为FBV,而今天我们新接触的就是视图函数的另一类CBV:基于类的视图函数,我们这里拓展这个知识也是为了给后面学习RESTful框架打基础,因为python的RESTful框架可能会完全推翻前面我们学习到的Django基础知识,但是MVC架构是不变的哈。

    第一个CBV视图函数:

    # views.py
    from django.http import HTTPResponse
    from django.views import View
    class HelloCBV(View):
        msg=None
        def get(self,request):   # 只接收get请求
            return HTTPResponse('get request')
            
            
        def post(self,request):   # 只接收post请求
            return HTTPResponse('post request')
        
        
        def put(self,request):   # 只接收put请求
            return HTTPResponse('put request')

    对应的urls.py

    # urls.py
    from django.urls import path
    from . import views
    
    app_name = 'my_app'
    urlpatterns = [
        path('test/', views.test),
        path('books/',views.HelloCBV.as_view(), name='books')      
    ]

    从上面的views.py函数我们可能注意到了,get/post/put作为了函数方法名,这里的方法名就比较神奇了,因为他就是拿来接收我们客户端的get/post/put请求的。我也觉得超级神奇!!

    为啥会这么神奇呢??

    因为我们类视图继承了View这个大类,所以连带着我们urls.py中接口的地方,都变成了

    views.HelloCBV.as_view()

    正因为这个as_view() 所以我们才会看到上面这么神奇的事。

    我们阅读as_view()的源代码发现它是View类的方法,而View方法可以直接这样干的请求还有:

    http_method_names = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace']

    由此可知,我们上面这些方法也阔以这么干,嘿嘿嘿 ヾ(´∀`.ヾ)。

    注意!!!

    • 我们as_view()中可以传递参数,但是参数名称不能是get/post等请求方法名!!

    好的,以上就是我今天摸了一下类视图函数的感觉,手感不错哦!!

  • 相关阅读:
    取时间
    DEV控件属性
    Dev之barManager控件属性
    linq查询Contains
    绑定
    运算符转换方法组和int类型的操作数
    学习计划实践
    学习计划2
    foreacht学习
    Spring5源码分析(二) IOC 容器的初始化(五)
  • 原文地址:https://www.cnblogs.com/Vera-y/p/12068600.html
Copyright © 2020-2023  润新知