Django中什么时候使用APIView,什么时候使用ViewSets,有什么特定的条件吗



IN Serializers.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(您甚至可以编写自己的ViewSet来处理产品的需求(,您可以使其可读且不重复代码与这个概念相关的DRY(不要重复(

检查DRY

在APIViews的情况下,如果您需要一个不太依赖模型的端点,您可以简单地使用它。

最新更新