Pur*_*ret 11 python django rest django-rest-framework
Django Rest框架有这个说POST,引用一个Django开发
要求
如果你正在做基于REST的Web服务......你应该忽略request.POST.
- Django开发团队的Malcom Tredinnick
作为经验不足的网络开发人员,为什么request.POST(标准)不鼓励request.DATA(非标准)?一个人更灵活吗?
Tom*_*tie 17
文档涵盖了这个:
request.data返回请求正文的已解析内容.这类似于标准的request.POST和request.FILES属性,除了:
- 它包括所有已解析的内容,包括文件和非文件输入.
- 它支持解析除POST之外的HTTP方法的内容,这意味着您可以访问PUT和PATCH请求的内容.
- 它支持REST框架的灵活请求解析,而不仅仅支持表单数据.例如,您可以像处理传入表单数据一样处理传入的JSON数据.
最后两个是重要的.通过使用request.data整个而不是request.POST,您支持JSON和表单编码输入(或您配置的任何解析器集),并且您将接受请求内容PUT和PATCH请求,以及POST.
一个人更灵活吗?
是.request.data更灵活.
Yun*_*Gun 10
我认为某些用户在尝试从普通 Django 中的 POST 正文获取数据时(当他们不使用 Django REST 框架时)会被重定向到此处。如果您使用基本的 Django 端点,则可以用来request.body从请求正文中获取数据,只要它不是发送到服务器的表单数据(在这种情况下使用request.POST)。request.data这与使用 Django REST 框架访问数据所需的属性不同。
from json import loads
def login(request):
json = loads(request.body)
print(json['username']) # Prints the value associated with
Run Code Online (Sandbox Code Playgroud)
loads(request.body)是必需的,因为 request.body 返回一个字节字符串。loads将该字节字符串转换为字典。
request.BODY对于 Django 的默认请求对象, 、request.data、 和request.DATA均未定义。
https://docs.djangoproject.com/en/3.1/ref/request-response/
请注意,HttpRequest 下没有.data与 Django REST 框架请求不同的属性。
(这并没有回答原来的问题,但可能会对最终没有使用 REST 框架的用户有所帮助)
| 归档时间: |
|
| 查看次数: |
3346 次 |
| 最近记录: |