Django request对象参数解析以及实现
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.POSTif request.method == "POST"HttpRequest.methodPOST它不包含文件上传信息。请参阅FILES。
HttpRequest.COOKIES¶-
包含所有cookie的字典。键和值是字符串。
HttpRequest.FILES¶-
包含所有上载文件的类字典对象。每个键
FILES都是name来自的。中的每个值都是一个。<input type="file" name="">FILESUploadedFile有关更多信息,请参见管理文件。
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将映射到METAkeyHTTP_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')


浙公网安备 33010602011771号