Django Rest Framework,两种不同的 POST 请求方法

问题描述 投票:0回答:1

我对 DRF(Django Rest Framework)中关于 POST 请求的两种不同方法有疑问。所以我的问题是,是否最好在开始时使用 Approach 2 来保持视图和序列化器更简单,或者从方法 1 开始是否更常见,因为在这种情况下,我将来更有可能需要 .create() 方法?

方法一:

// view.py

class ExampleView1(APIView):
    def post(self, request):
        data = request.data
        serializer = CourseSerializer(data=data, context={"request": request}, partial=True)
        if serializer.is_valid(raise_exception=True):
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)


// serializer .create() method

class ExampleSerializer(ModelSerializer):
   def create(self, validated_data):
       user = self.context.get("request").user
       return Course.objects.create(**validated_data, owner=user)

方法2:

class ExampleView2(APIView):
    def post(self, request):
        data = request.data
        data["owner"] = request.user.pk
        serializer = CourseSerializer(data=data)
        if serializer.is_valid(raise_exception=True):
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
django django-rest-framework django-serializer
1个回答
0
投票

Django 也遵循 home 页面中所述的快速开发和 DRY 原则。

考虑到这一点,这意味着 Django 尊重最小的代码库,考虑到第二种方法是可行的方法。此外,@Willem Van Onsem siggested CreatAPIView 将与此更加一致,因为这将进一步简化序列化器逻辑。

© www.soinside.com 2019 - 2024. All rights reserved.