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)
    

 

posted @ 2021-03-07 14:00  mkay  阅读(79)  评论(0编辑  收藏  举报