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)
        
  • 相关阅读:
    C++常变量
    C++变量(C++变量定义、变量赋值、命名规则)
    463. Island Perimeter
    500. Keyboard Row
    811. Subdomain Visit Count
    901. Online Stock Span
    419. Battleships in a Board
    620. Not Boring Movies
    893. Groups of Special-Equivalent Strings
    575. Distribute Candies
  • 原文地址:https://www.cnblogs.com/erchun/p/14494464.html
Copyright © 2011-2022 走看看