注意如果你同时使用request.body和request.data时
request .body 需要在request.data 前使用,不然获取会抛异常
其次request.body用户获取非表单类型数据请求体,如果只想获取表单请求参数使用request.POST
需要获取文件使用request.FILES,
request.data可以获取put.post.delete 类型的请求所有数据包含文件对象
request.query_params获取get请求参数params
request.post
HttpRequest.
POST
¶
包含所有给定HTTP POST参数的类字典对象,条件是请求包含表单数据。请参阅QueryDict
下面的 文档。如果您需要访问请求中发布的原始或非格式数据,请HttpRequest.body
改为通过属性进行访问 。
可以通过带有空POST
字典的POST发出请求-例如,如果通过POST HTTP方法请求了表单,但其中不包含表单数据。因此,您不应该使用 POST方法进行检查。而是使用(请参阅)。if request.POST
if request.method == "POST"
HttpRequest.method
POST
它不包含文件上传信息。请参阅FILES
。
HttpRequest.
body
¶
原始HTTP请求主体为字节串。这对于以不同于常规HTML表单的方式处理数据很有用:二进制图像,XML有效负载等。对于处理常规表单数据,请使用 HttpRequest.POST
。
您也可以HttpRequest
使用HttpRequest.read()
或文件状界面 从中读取内容HttpRequest.readline()
。使用这些I / O流方法之一读取请求后访问body
属性将产生一个。RawPostDataException
一般如果表单请求需要上传文件时必须使用muti/form-data ,x-www-rform-urlencoded是无法实现文件上传的
当请求上传mutipart/form-data时,如下:
request.body 获取到文件字节,
request.POST获取到参数不包含文件的querydict
request.data 参数和文件对象堆在其中都可以拿到
如果enctype= 'application/x-www-from-urlencoded' 时,无文件上传参数时,获取到参数
request.body ,获取到的是,data字节
request.POST获取到是参数querydict
request,data 也是表单参数querydict