Есть ли какое-то конкретное условие, когда использовать APIView и когда использовать ViewSets в Django
В файле Serialezers.py я увидел, что пользователь использует APIView в одном и Modelviewset в нескольких.
from django.shortcuts import render
from rest_framework import serializers
from rest_framework.response import Response
from rest_framework.utils import serializer_helpers
from rest_framework.views import APIView
from rest_framework.viewsets import ModelViewSet
from .models import *
from rest_framework import status
from .serializers import *
class ProductList(APIView):
def get(self, request):
products = Product.objects.all()
serializer = ProductSerializer(products, many=True)
return Response(serializer.data)
def post(self, request):
serializer = ProductSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
class CategoryViewSet(ModelViewSet):
serialzer_class = CategorySerializer
queryset = Category.objects.all()
Использование ModelViewSet уменьшает количество строк кода (который утомительно читать)
поэтому, используя эти пользовательские ViewSet (вы даже можете написать свой собственный, чтобы удовлетворить потребности вашего продукта), вы можете сделать его читабельным и не повторяющимся кодом что связано с концепцией DRY (Don't repeat yourself)
в случае APIViews, если вам нужна конечная точка, которая не так сильно зависит от моделей, вы можете просто использовать ее вместо этого.