在Django中,Serializer类中的“data”字段来自哪里?

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

我在一堆 django 代码中看到,特别是在视图集中,当序列化器初始化时如下所示:

class UserViewSet(viewsets.ModelViewSet):
    """
    A viewset that provides the standard actions
    """
    queryset = User.objects.all()
    serializer_class = UserSerializer
    
    @action(detail=True, methods=['post'])
    def set_password(self, request, pk=None):
        user = self.get_object()
        **serializer = PasswordSerializer(data=request.data)**

数据参数始终在 Serializer 实例的实例化中传递。但我觉得我一直在到处研究 django 文档,但似乎找不到对此数据参数的引用。我真的很想知道数据在这里到底做什么,它从哪里来,为什么它的信息如此隐藏?

我尝试研究官方的 django Rest 框架文档,并搜索了几篇 Medium 文章,但无济于事。

django django-rest-framework django-views django-serializer django-rest-viewsets
1个回答
1
投票

在 Django REST 框架 (DRF) 中,您所指的数据参数通常在实例化序列化器时使用。该参数表示您想要序列化或验证的数据。

serializer = PasswordSerializer(data=request.data)

PasswordSerializer 是一个序列化器类,request.data 是您要使用此序列化器验证和/或序列化的输入数据。

request.data:这通常在 Django REST 框架视图中使用,以访问来自请求的传入数据。它是一个类似字典的对象,包含来自请求负载的解析数据。对于 POST 请求,这通常是请求正文中发送的数据。

当您使用 data=request.data 实例化序列化器时,您实际上是在告诉序列化器对此输入数据进行操作。然后,序列化器将使用其定义的字段和验证规则来处理此数据。

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