Django REST Framework - несколько представлений для одной конечной точки
Я недавно узнал немного о RESTful дизайне с Django/DRF, я хочу знать, как иметь 1+ представлений для одной конечной точки в зависимости от метода запроса (GET, POST и т.д.) ! НЕ ОДНО ВИДЕНИЕ С РАЗНЫМИ МЕТОДАМИ, А ОДНО ВИДЕНИЕ ДЛЯ КАЖДОГО МЕТОДА ДЛЯ ОДНОЙ КОНЕЧНОЙ ТОЧКИ!. Я не могу найти способ сделать эту простую вещь. Я знаю о наборах представлений и общих вещах, НО я хочу сделать это таким образом и только через restframework.views.APIView
.
Предположим, у меня есть views.py (views на 100% в порядке):
class ClubListView(APIView):
def get(self, request):
clubs_qs = Club.objects.all()
serializer = ClubSerializer(clubs_qs, many=True)
return Response(serializer.data, status=status.HTTP_200_OK)
class ClubCreateView(APIView):
def post(self, request):
serializer = ClubSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
new_club = create_club(**serializer.validated_data)
serializer = ClubSerializer(new_club)
return Response(serializer.data, status=status.HTTP_201_CREATED)
Итак, вопрос в том, как я могу установить эти 2 представления на http://localhost/api/players/
конечную точку с помощью Django, так что если это POST, то срабатывает представление создания, если GET - представление списка. Может мне нужно просто создать одно представление, которое наследует эти 2, но может есть более правильный способ реализовать это.
Заранее спасибо
Вы можете сделать это таким образом
class ClubListView(APIView):
def get(self, request):
clubs_qs = Club.objects.all()
serializer = ClubSerializer(clubs_qs, many=True)
return Response(serializer.data, status=status.HTTP_200_OK)
def post(self, request):
serializer = ClubSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
new_club = create_club(**serializer.validated_data)
serializer = ClubSerializer(new_club)
return Response(serializer.data, status=status.HTTP_201_CREATED)
когда вы используете APIView Все функции def, такие как (GET, POST, PUT, DELETE) должны быть в одном классе
удачи