gpt4 book ai didi

python - DRF 中的 request.data 与 DRF 中的 serializers.data

转载 作者:行者123 更新时间:2023-12-04 14:45:27 26 4
gpt4 key购买 nike

DRF 中的 request.data 和 DRF 中的 serializers.data 有什么区别。

当我在 DRF 中编写基于函数的 View 时,我会像使用它们一样 -

        elif request.method == 'POST':  

serializer = datesSerializer(data=request.data)
if serializer.is_valid():
serializer.save()

和,

        startdate = serializer.data['startdate']
enddate = serializer.data['enddate']

但是找不到它们的区别以及在代码中使用它们的区别。

最佳答案

request.data 似乎是一个可能不好吃的生鸡蛋,并且包含有关请求的额外信息。根据您的序列化程序设置,Serializer.data 类似于煮熟的鸡蛋菜。

并且 request.data 将用作序列化程序的输入。如果在检查序列化程序的验证后请求数据有效,则可以保存序列化程序以创建对象实例。如果不是,则序列化程序无效。如果所有这些过程都成功,您就可以访问 serializer.data ,它是一个格式化的字典。

这里是request data的定义在 DRF 中。

request.data returns the parsed content of the request body. This is similar to the standard request.POST and request.FILES attributes except that:

It includes all parsed content, including file and non-file inputs.
It supports parsing the content of HTTP methods other than POST, meaning that you can access the content of PUT and PATCH requests.
It supports REST framework's flexible request parsing, rather than just supporting form data. For example you can handle incoming JSON data in the same way that you handle incoming form data.
For more details see the parsers documentation.

这里是 request.data 的一个例子

{
"csrfmiddlewaretoken":[
"RrwwZyZCmEElmGG16muxEopwXbRZDsARYcDjraIC1kmcjEux3OIOZoeG7XUSmL4V"
],
"email":[
"myqepuzez@mailinator.com"
],
"first_name":[
"Roary"
],
"last_name":[
"Daugherty"
],
"password":[
"In quam qui magni re"
],
"phone":[
"+1 (542) 262-5207"
],
"username":[
"tikit"
]
}

以及序列化器的数据示例:

{
"id":3,
"group_ids":[
],
"role_ids":[
],
"email":"myqepuzez@mailinator.com",
"first_name":"Roary",
"is_active":False,
"last_name":"Daugherty",
"phone":"+1 (542) 262-5207",
"username":"tikit"
}

关于python - DRF 中的 request.data 与 DRF 中的 serializers.data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59962605/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com