类视图设计原则
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)