0802drf视图(代码片段)

mr-murray mr-murray     2022-12-19     230

关键词:

昨日回顾:

    1. Serializer(序列化)
        1. ORM对应的query_set和ORM对象转换成JSON格式的数据
            1. 在序列化类中定义自定义的字段:SerializerMethodField
                在类中定义 get_自定义字段名(self, obj)方法
            2. read_only 只在显示(查询)时才会有效。
        
        2. 对前端POST过来的数据做有效性的校验
            1. 一定要将数据以data=的形式传递到序列化类中!!!
                ser_obj = CommentSerializer(data=comment_data) 
            2. 判断数据是否有效
                ser_obj.is_valid():  
                ser_obj.validated_data 中保存经过校验的有效数据
            
            3. 局部钩子
                定义一个validate_字段名(self, value)
            4. 全局钩子
                定义一个validate方法
                
        3. .save()方法将符合要求的数据存入数据库
            1. 本质上还是调用ORM的create()方法
            类名.objects.create(**ser_obj.validated_data)
            
    2. 超链接的序列化
        1. 超连接字段的三个参数
        # 文章超链接序列化
        class ArticleHyperLinkedSerializer(serializers.HyperlinkedModelSerializer):
            # view_name参数 默认使用 表名-detail
            # lookup_url_kwarg参数 默认使用pk,指的是反向生成URL的时候 路由中的分组命名匹配的key
            # lookup_field参数 默认使用的pk, 指的是反向生成URL的时候, 路由中分组命名匹配的value
            school = serializers.HyperlinkedIdentityField(
                view_name=school-detail111,
                lookup_url_kwarg=name,
                lookup_field=school_name
            )
        2. 想要生成完整的超链接API,在序列化的时候还要传入 context=request: request
           ser_obj = app01_serializers.ArticleHyperLinkedSerializer(all_article, many=True, context=request: request)
           1. 想要生成相对路径
                context=request: None

今日内容:

1. 面向对象的三大特性
        1. 封装
            1. 把共有的数据当成一类物体的属性
            2. 把共有的功能当成一类物体的方法
            
        2. 继承
            1. 把共有的属性或方法抽离出来放到一个基类(父类)中
        3. 多态
            1. 不同的物体调用同一个方法有不同的效果
                Python中数字的+和字符串的+
    2. 葫芦娃的故事
        五个娃
           ↓
        奇数娃和偶数娃
           ↓
         套娃
    3. GenericAPIView和五个混合类的组合使用
    
    4. RetrieveUpdateDestroyAPIView和ListCreateAPIView的使用
    
    5. ModelViewSet的使用
    
    6. ModelViewSet Router的使用
       

 
























drf视图(代码片段)

2个视图基类APIView(rest_framework.views.APIView)APIView是RESTframework提供的所有视图的基类,继承自Django的View父类。APIView与View的不同之处在于:传入到视图方法中的是RESTframework的Request对象,而不是Django的HttpRequeset对象;视图方法可以返... 查看详情

04drf视图组件(代码片段)

一.视图DjangoRESTframwork提供的视图的主要作用:控制序列化器的执行(检验、保存、转换数据)控制数据库查询的执行1.1视图继承关系1.2视图2个视图基类APIViewGenericAPIView[通用视图类]1.2.1APIViewrest_framework.views.APIViewAPIView是RESTframewor... 查看详情

drf的视图和路由(代码片段)

DRF的视图APIView我们django中写CBV的时候继承的是View,rest_framework继承的是APIView,那么他们两个有什么不同呢~~~urlpatterns= [    url(r‘^book$‘,BookView.as_view()),    url(r‘^book/(?P<i 查看详情

drf框架serializer之视图优化(代码片段)

...列化中,我们通过创建序列化器对象的方式大大地简化了视图函数的代码,前端传入的数据通过反序列化操作进行了各种数据校验,代码如下:fromdjango.httpimportJsonResponsefromdjango.viewsimportViewfromdjango.dbimportconnectionimportjsonfrom.modelsim... 查看详情

drf视图类关系详解(代码片段)

...,request._request#3json模块是否执行反序列化bytes格式#4考你:视图类的方法中:self.request,就是当次请求的request#5Response:类,实例化传一堆参,data=字典,status=状态码( 查看详情

drf视图(代码片段)

目录开始使用内置视图请结合【DRF序列化】此文献中的数据文件及序列化文件来阅读如下代码.DRF视图为我们提供了非常简便的方法——内置了增删改查等一系列的操作.我们只需在url中指定对应的方法,视图继承内置方法的类,... 查看详情

drf序列化器之请求响应以及视图(代码片段)

...ttp请求处理drf除了在数据序列化部分简写代码以外,还在视图中提供了简写操作。所以在django原有的django.views.View类基础上,drf封装了多个视图子类出来提供给我们使用。DjangoRESTframwork提供的视图的主要作用:控制序列化器的执... 查看详情

drf4.drf视图开发restfulapi接口(代码片段)

四种方式:函数式编程:functionbasedview类视图:classedbasedview通用类视图:genericclassedbasedviewDRF的视图集Viewsets原生DjangoFBV(Funcitonbasedview)编写,应用的views.pyimportjsonfromdjango.httpimportJsonResponsefromdjango.views.decorators.csrfimportcsrf_exemptcourse... 查看详情

drf之路由系统与视图(代码片段)

手动路由编写#路由fromdjango.conf.urlsimporturlfromapp01.viewsimportUserListViewurlpatterns=[#GET请求查询所有#POST请求增加url(r'^users/$',UserListView.as_view()),url(r'^users.(?P<format>w+)/$',Us 查看详情

学习drf之前(代码片段)

...已经了解过CBV以及FBV什么是FBV和CBV呢~~  FBV基于函数的视图  CBV基于类的视图也就是说我们是用函数编写视图~还是类编写视图~~我们来看下两个的简单实现~~urlpatterns=[path(‘admin/‘,admin.site.urls),path(‘test_fbv‘,t 查看详情

drf视图和路由(代码片段)

APIView:在django中写CBV的时候是继承View,rest_framework继承的是APIView,这两种具体有什么不同呢?urlpatterns=[url(r‘^book$‘,BookView.as_view()),url(r‘^book/(?P<id>d+)$‘,BookEditView.as_view()),]无论是View还是APIView最开始调用的都是as_ 查看详情

drf之视图组件(代码片段)

不断的优化我们写的程序,是每个程序员必备的技能和职业素养,也是帮助我们成长的非常重要的手段。相关知识点相关知识点一:RESTfulapi接口规范我给大家总结的REST的最重要的一句话,那就是:url用来唯一定位资源,http请求... 查看详情

drf视图家族(代码片段)

drf视图家族视图家族- 视图基类,视图工具类,工具视图类,视图集视图基类:APIView、GenericAPIView视图工具类:mixins包下的五个类(六个方法)工具视图类:generics包下的所有GenericAPIView的子类视图集:viewsets包下的类generics中... 查看详情

drf入门规范(代码片段)

...化序列化与反序列化的过程,不仅如此,还提供丰富的类视图、扩展类、视图集来简化视图的编写工作。 查看详情

django-rest-framework---总结(代码片段)

...与反序列化整合(重点)3.整体单改4.单与整体局部修改视图类视图类传递参数给序列化类二次封装Response类视图家族GenericAPIView基类mixins视图工具集-辅助GenericAPIView工具视图视图集GenericAPIView与APIView最为两大继承视图的区别工具... 查看详情

drf框架之视图的扩展类简介(代码片段)

...架,为我们提供的试图扩展类的使用方法即作用。在使用视图扩展类时,需要将mixins模块导入到view文件中。fromrest_frameworkimportmixins并且,在使用视图扩展类时,必须结合GenericAPIView基类一起使用。所谓,视图的扩展类,就是Generi... 查看详情

drf视图组件(代码片段)

一基本视图写一个出版社的增删查改resful接口 路由:url(r‘^publish/$‘,views.PublishView.as_view()),url(r‘^publish/(?P<pk>d+)/$‘,views.PublishDetailView.as_view()),视图:classPublishSerializers(serializers.ModelSerializer):classMeta:model=models.Publishfields=‘_... 查看详情

drf-视图集路由系统action装饰器(代码片段)

1.9个视图扩展类1.两个视图基类:APIView、GenricAPIView2.5个视图扩展类:CreateModelMixin,UpdateModelMixin,RetrieveModelMixin,ListModelMixin,DestroyModelMixin3.9个视图子类:CreateAPIView,DestroyAPIView,ListAPIView,RetrieveAPIView,UpdateAPIView,ListCreateAPIView,RetrieveDestroyAPIVi... 查看详情