提问人:AncientSwordRage 提问时间:2/17/2015 最后编辑:CommunityAncientSwordRage 更新时间:1/25/2021 访问量:11589
Django Rest 框架:请求。帖子与request.data?
Django Rest frameworks: request.Post vs request.data?
问:
Django Rest Frameworks 引用了 Django 开发人员的话POST
请求
如果你正在做基于 REST 的 Web 服务......你应该忽略 request.POST。
— Malcom Tredinnick,Django 开发者组
作为经验不足的 Web 开发人员,为什么(标准)比(非标准)更不鼓励?一个更灵活吗?request.POST
request.DATA
答:
文档涵盖以下内容:
request.data 返回请求体的解析内容。这类似于标准请求。POST 和请求。FILES 属性,但以下属性除外:
- 它包括所有解析的内容,包括文件和非文件输入。
- 它支持解析 POST 以外的 HTTP 方法的内容,这意味着您可以访问 PUT 和 PATCH 请求的内容。
- 它支持REST框架的灵活请求解析,而不仅仅是支持表单数据。例如,您可以采用与处理传入表单数据相同的方式处理传入的 JSON 数据。
最后两个是重要的。通过使用 through 而不是 ,您将同时支持 JSON 和表单编码的输入(或您配置的任何一组解析器),并且您将接受 和 请求以及 for 的请求内容。request.data
request.POST
PUT
PATCH
POST
一个更灵活吗?
是的。 更灵活。request.data
评论
request.POST
request.data
我认为一些用户在尝试从原版 Django 的 POST 正文中获取数据时(当他们不使用 Django REST 框架时)被重定向到这里。如果你使用的是基本的 Django 端点,你用它来从请求正文中获取数据,只要它不是发送到服务器的表单数据(在这种情况下,请使用 )。这与使用 Django REST 框架访问数据所需的属性不同。request.body
request.POST
request.data
from json import loads
def login(request):
json = loads(request.body)
print(json['username']) # Prints the value associated with
loads(request.body)
是必需的,因为 request.body 返回一个字节字符串。 将该字节字符串转换为字典。loads
request.BODY
、 和 对于 Django 的默认请求对象都是未定义的。request.data
request.DATA
https://docs.djangoproject.com/en/3.1/ref/request-response/
请注意,HttpRequest 下没有与 Django REST 框架请求不同的属性。.data
(这并不能回答最初的问题,但可能会帮助那些最终没有使用REST框架的用户)
评论
request.body
request.data
评论