HttpRequest
对象¶
- 类
HttpRequest
¶
属性¶
除非另有说明,否则所有属性都应被视为只读。
HttpRequest.
scheme
¶-
表示请求方案的字符串(
http
或https
通常)。
HttpRequest.
body
¶-
原始HTTP请求主体为字节串。这对于以不同于常规HTML表单的方式处理数据很有用:二进制图像,XML有效负载等。对于处理常规表单数据,请使用
HttpRequest.POST
。您也可以
HttpRequest
使用HttpRequest.read()
或文件状界面 从中读取内容HttpRequest.readline()
。使用这些I / O流方法之一读取请求后访问body
属性将产生一个。RawPostDataException
HttpRequest.
path
¶-
一个字符串,代表请求的页面的完整路径,不包括方案或域。
例:
"/music/bands/the_beatles/"
HttpRequest.
path_info
¶-
在某些Web服务器配置下,主机名之后的URL部分被分为脚本前缀部分和路径信息部分。
path_info
无论使用什么Web服务器,该属性始终包含路径的路径信息部分。使用它代替,path
可以使您的代码更容易在测试服务器和部署服务器之间移动。例如,如果
WSGIScriptAlias
您的应用程序的设置为"/minfo"
,则path
可能是"/minfo/music/bands/the_beatles/"
和path_info
将会是"/music/bands/the_beatles/"
。
HttpRequest.
method
¶-
一个字符串,代表请求中使用的HTTP方法。保证是大写的。例如:
if request.method == 'GET': do_something() elif request.method == 'POST': do_something_else()
HttpRequest.
encoding
¶-
一个字符串,表示用于解码表单提交数据的当前编码(或
None
,表示使用该DEFAULT_CHARSET
设置)。您可以写入此属性以更改访问表单数据时使用的编码。任何后续的属性访问(例如从GET
或读取POST
)都将使用新encoding
值。如果您知道表单数据不在DEFAULT_CHARSET
编码中,则很有用。
HttpRequest.
content_type
¶-
从
CONTENT_TYPE
标头解析的表示请求的MIME类型的字符串 。
HttpRequest.
content_params
¶-
CONTENT_TYPE
标头中包含键/值参数的字典。
HttpRequest.
POST
¶-
包含所有给定HTTP POST参数的类字典对象,条件是请求包含表单数据。请参阅
QueryDict
下面的 文档。如果您需要访问请求中发布的原始或非格式数据,请HttpRequest.body
改为通过属性进行访问 。可以通过带有空
POST
字典的POST发出请求-例如,如果通过POST HTTP方法请求了表单,但其中不包含表单数据。因此,您不应该使用 POST方法进行检查。而是使用(请参阅)。if request.POST
if request.method == "POST"
HttpRequest.method
POST
它不包含文件上传信息。请参阅FILES
。
HttpRequest.
COOKIES
¶-
包含所有cookie的字典。键和值是字符串。
HttpRequest.
FILES
¶-
包含所有上载文件的类字典对象。每个键
FILES
都是name
来自的。中的每个值都是一个。<input type="file" name="">
FILES
UploadedFile
有关更多信息,请参见管理文件。
FILES
仅当请求方法为POST且<form>
发布到请求的方法为时,才会包含数据enctype="multipart/form-data"
。否则,FILES
将是一个空白的类似于字典的对象。
HttpRequest.
META
¶-
包含所有可用HTTP标头的字典。可用的标头取决于客户端和服务器,但以下是一些示例:
CONTENT_LENGTH
–请求正文的长度(以字符串形式)。CONTENT_TYPE
–请求正文的MIME类型。HTTP_ACCEPT
–响应的可接受的内容类型。HTTP_ACCEPT_ENCODING
–响应的可接受编码。HTTP_ACCEPT_LANGUAGE
–可接受的响应语言。HTTP_HOST
–客户端发送的HTTP Host标头。HTTP_REFERER
–推荐页面(如果有)。HTTP_USER_AGENT
–客户端的用户代理字符串。QUERY_STRING
–查询字符串,作为单个(未分析)字符串。REMOTE_ADDR
–客户端的IP地址。REMOTE_HOST
–客户端的主机名。REMOTE_USER
–由Web服务器验证的用户(如果有)。REQUEST_METHOD
–诸如"GET"
或的字符串"POST"
。SERVER_NAME
–服务器的主机名。SERVER_PORT
–服务器的端口(以字符串形式)。
除了
CONTENT_LENGTH
和之外CONTENT_TYPE
,如上所述,META
通过将所有字符都转换为大写字母,用下划线替换所有连字符,并HTTP_
在名称中添加前缀,将请求中的所有HTTP标头转换为键。因此,例如,称为的标头X-Bender
将映射到META
keyHTTP_X_BENDER
。请注意,
runserver
该名称会删除名称中带有下划线的所有标头,因此您不会在中看到它们META
。这样可以防止基于下划线和破折号之间的歧义的标头欺骗在WSGI环境变量中均被标准化为下划线。它与Nginx和Apache 2.4+等Web服务器的行为相匹配。HttpRequest.headers
是访问所有HTTP前缀标头以及plusCONTENT_LENGTH
和的更简单方法CONTENT_TYPE
。
HttpRequest.
headers
¶-
不区分大小写,类似于dict的对象,该对象提供对请求中所有HTTP前缀的标头(plus
Content-Length
和Content-Type
)的访问。每个标题的名称在显示时都带有标题框(例如
User-Agent
)。您可以不区分大小写地访问标头:>>> request.headers {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6', ...} >>> 'User-Agent' in request.headers True >>> 'user-agent' in request.headers True >>> request.headers['User-Agent'] Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) >>> request.headers['user-agent'] Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) >>> request.headers.get('User-Agent') Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) >>> request.headers.get('user-agent') Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
#############
文件请求class TestView(APIView):
def post(self,request,*args,**kwargs):
#print('request.body', request.body)
data=request.data
file=request.FILES.get('file')
print('HI,,,,,,,,,,',request.FILES)
# for k,v in request.FILES.items():
# # v是对像
# print(k,v.read())
print('file',file)
print('file.getlist',request.FILES.getlist(key='file'))
print('file.data',request.data)
print('file.name',file.name)
print('file.size',file.size)
print('file.content_type',file.content_type)
print('request.post',request.POST)
# filenames=[]
# for f in request.FILES.getlist('file'):
# fname=f.name
# filenames.append(fname)
# print('file.read()',file.read())
return CommonResponse({'ame':1,'code':0})
#return HttpResponse(file.read(), content_type='application/octet-stream')