我正在使用django和DRF构建API。在这里我使用自定义ModelViewSet和MixIns。这些实现了我的API的list(),update(),create()和destroy()函数。现在我有一整套视图集:
from kernel.api.viewsets.base implement CustomBaseViewSet
class MyModelViewSet1(CustomBaseViewSet):
serializer_class = MyModel1Serializer
queryset = MyModel1.objects.all()
class MyModelViewSet2(CustomBaseViewSet):
serializer_class = MyModel2Serializer
queryset = MyModel2.objects.all()
class MyModelViewSet3(CustomBaseViewSet):
serializer_class = MyModel3Serializer
queryset = MyModel3.objects.all()
... and so on ...
问题1 :我现在在两个Zen规则中存在冲突,我是否应该明确绑定create,list,destoy和update方法(因为显式优于隐式)或将被认为是浪费了一口气......
class MyModel1ViewSet(CustomBaseViewSet)
serializer_class = MyModel1Serializer
queryset = MyModel1.objects.all()
def list(self, *args, **kwargs):
super().list(*args, **kwargs)
def create(self, *args, **kwargs):
super().create(*args, **kwargs)
...
我能想到的一个事情是,显式方法比DRY方法更有用,我可以在方法中提供docstrings,这些方法在我的DRF-api中显示为文档。
问题2: DRY与E> I原则之间是否有任何其他优缺点???