首页 > 其他 > 详细

Django request对象参数解析以及实现

时间:2020-11-15 08:15:32      阅读:28      评论:0      收藏:0      [点我收藏+]

HttpRequest对象?

HttpRequest?

属性?

除非另有说明,否则所有属性都应被视为只读。

HttpRequest.scheme?

表示请求方案的字符串(httphttps 通常)。

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.GET?

包含所有给定HTTP GET参数的类字典对象。请参阅QueryDict下面的 文档。

HttpRequest.POST?

包含所有给定HTTP POST参数的类字典对象,条件是请求包含表单数据。请参阅QueryDict下面的 文档。如果您需要访问请求中发布的原始或非格式数据,请HttpRequest.body改为通过属性进行访问 

可以通过带有空POST 字典的POST发出请求-例如,如果通过POST HTTP方法请求了表单,但其中不包含表单数据。因此,您不应该使用 POST方法进行检查。而是使用(请参阅)。if request.POSTif request.method == "POST"HttpRequest.method

POST包含文件上传信息。请参阅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将映射到METAkey HTTP_X_BENDER

请注意,runserver该名称会删除名称中带有下划线的所有标头,因此您不会在中看到它们META这样可以防止基于下划线和破折号之间的歧义的标头欺骗在WSGI环境变量中均被标准化为下划线。它与Nginx和Apache 2.4+等Web服务器的行为相匹配。

HttpRequest.headers是访问所有HTTP前缀标头以及plusCONTENT_LENGTH的更简单方法CONTENT_TYPE

HttpRequest.headers?

不区分大小写,类似于dict的对象,该对象提供对请求中所有HTTP前缀的标头(plusContent-LengthContent-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)

Django request对象参数解析以及实现

原文:https://www.cnblogs.com/SunshineKimi/p/13975453.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!