zoukankan      html  css  js  c++  java
  • Django-13-类视图设计原则

    类视图设计原则

    a.类视图尽量简化

    b.根据需求选择相应的父类视图

    c.如果DRF中的类视图有提供相应的逻辑,那么直接使用父类提供的

    d.如果DRF中的类视图,绝大多数需要都能满足,那么直接重写父类的实现

    e.如果DRF中的类视图完全不满足要求,直接自定义

    1、同一视图下,不同的action使用不同的序列化器类

    • 新增一个不同的序列化器
    • 改写get_serializer_class方法,判断action名称
    。。。
    serializer_class = serializers.ProjectModelSerializer
    。。。
    def get_serializer_class(self):
            if self.action == 'names':
                return serializers.ProjectNamesModelSerializer
            else:
                return self.serializer_class
            # return serializers.ProjectNamesModelSerializer if self.action == 'names' else self.serializer_class

    2、如果某个action不想要分页/过滤功能

    可以重写filter_queryset、paginate_queryset方法

     def filter_queryset(self, queryset):
            if self.action == 'names':
                return self.queryset
            else:
                return super().filter_queryset(queryset)
    
        def paginate_queryset(self, queryset):
            if self.action == 'names':
                return None
            else:
                return super().paginate_queryset(queryset)
        
  • 相关阅读:
    数据库表关联分析
    java异常信息分析
    版本问题
    项目
    EXCEL工具
    项目安全
    服务器环境
    vue公共
    Linux 文件权限
    nginx
  • 原文地址:https://www.cnblogs.com/erchun/p/14494464.html
Copyright © 2011-2022 走看看