Django Rest API 将 delete/get/update/get 方法合并为两个 class

Django Rest API merging delete/get/update/get methond in two class

首先你在view.py:

中看到我的4个方法class
class ContactList(ListAPIView):
    queryset = Contact.objects.all()
    serializer_class = ContactSerializers

# This is delete method
class ContactDelete(DestroyAPIView):
    queryset = Contact.objects.all()
    serializer_class = ContactSerializers
    lookup_field = 'pk'

#below is post method to create new contact
class ContactCreate(CreateAPIView):
    queryset = Contact.objects.all()
    serializer_class = ContactSerializers

#below is put and patch method to update contact
class ContactUpdate(UpdateAPIView):
    queryset = Contact.objects.all()
    serializer_class = ContactSerializers
    lookup_field = 'pk'

我想要 ContactListContactCreate 应该在一个 class

ContactDeleteContactUpdate应该在一个class

我不知道如何合并它,谁能告诉我该怎么做?

注意:我不想APIViewSet

DRF 已经 类 为此目的。你可以查看它们 here and here

from rest_framework.generics import ListCreateAPIView, RetrieveDestroyAPIView


class ContactCreateListAPIView(ListCreateAPIView):
    queryset = Contact.objects.all()
    serializer_class = ContactSerializers


class ContactRetrieveDeleteAPIView(RetrieveDestroyAPIView):
    queryset = Contact.objects.all()
    serializer_class = ContactSerializers
    lookup_field = 'pk'

希望对您有所帮助

<b># This is create and list method</b>
class ContactListCreate(<b>ListAPIView, CreateAPIView</b>):
    queryset = Contact.objects.all()
    serializer_class = ContactSerializers


<b># This is delete and update method</b>
class ContactDeleteUpdate(<b>DestroyAPIView, UpdateAPIView</b>):
    queryset = Contact.objects.all()
    serializer_class = ContactSerializers

您可以从视图中删除 lookup_field = 'pk',因为 DRF 将 pk 作为默认值。