zoukankan      html  css  js  c++  java
  • view

    from rest_framework.viewsets import GenericViewSet
    from rest_framework.mixins import ListModelMixin
    from rest_framework.filters import SearchFilter
    from . import models, serializers
    
    # 搜索课程接口
    class SearchCourseViewSet(GenericViewSet, ListModelMixin):
        queryset = models.Course.objects.filter(is_delete=False, is_show=True).all()
        serializer_class = serializers.CourseSerializer
    
        pagination_class = pagination.PageNumberPagination
    
        filter_backends = [SearchFilter]
        search_fields = ['name']

    1 继承了GenericAPIview必须写

    queryset = models.Course.objects.filter(is_delete=False, is_show=True).all()
    serializer_class = serializers.CourseSerializer

    包括了下列方法

    queryset = models.Book.objects.all()
    serializer_class = serializer.BookModelSerializer
    get_queryset:获取配置的queryset
    get_object:单条记录查询时使用,路由中的分组字段必须是pk
    get_serializer:获取配置的序列化类    

    2 GenericViewSet继承了ViewSetMixin,和GenericAPIView

    ViewSetMixin能自动生成路由

    3 这五个视图子类必须和GenericAPIview或继承它的类(GenericViewSet)写在一起

    from rest_framework.mixins import ...
    CreateModelMixin:create方法创建一条
    DestroyModelMixin:destory方法删除一条
    ListModelMixin:list方法获取所有
    RetrieveModelMixin:retrieve获取一条
    UpdateModelMixin:update修改一条

    因为这5个类中需要queryset和serializer_class作为参数和GenericAPIView的方法

    queryset = models.Course.objects.filter(is_delete=False, is_show=True).all()
    serializer_class = serializers.CourseSerializer

    4 listmodelmixin源码

    class ListModelMixin:
        """
        List a queryset.
        """
        def list(self, request, *args, **kwargs):
            queryset = self.filter_queryset(self.get_queryset())
    
            page = self.paginate_queryset(queryset)
            if page is not None:
                serializer = self.get_serializer(page, many=True)
                return self.get_paginated_response(serializer.data)
    
            serializer = self.get_serializer(queryset, many=True)
            return Response(serializer.data)
  • 相关阅读:
    python读取excel保存到mysql
    python读取mysql返回json
    在C#后台使用MD5值对文件进行加
    使用文件流的形式上传大文件
    IE8兼容性问题
    解决 CentOS 下找不到库文件的问题
    openssl/ossl_typ.h:没有那个文件或目录
    解决 VSCode 进行 C/C++ 开发时 gcc 依赖缺失问题
    VSCode 中进行 C/C++ 开发需要的配置文件
    记一下使用 WeBASE 搭建自己的联盟链过程
  • 原文地址:https://www.cnblogs.com/xupengjun/p/14254892.html
Copyright © 2011-2022 走看看