Django HttpRequest对象
当请求页面时,Django会创建一个HttpRequest包含有关请求的元数据的对象。然后Django加载适当的视图,将HttpRequest第一个参数传递给view函数。
HttpRequest.scheme
表示请求方案(http或https 通常)的字符串。
HttpRequest.body
原始的HTTP请求主体,类型是字节字符串,这对于以不同于传统HTML表单的方式来处理Body数据时将非常有用:二进制映像,XML有效负载等。
如果是为了处理传统的表单数据,请使用: HttpRequest.POST 下面有讲。
HttpRequest.path
表示所请求页面的完整路径的字符串
例: "/music/bands/the_beatles/"
HttpRequest.path_info
在某些Web服务器配置下,主机名后面的URL部分被分成脚本前缀部分和路径信息部分。path_info无论使用何种Web服务器,该属性始终包含路径的路径信息部分。使用它可以使代码更容易在测试服务器和部署服务器之间进行移植
例如,如果WSGIScriptAlias设置为 "/minfo",
那么path:/minfo/music/bands/the_beatles/
path_info:/music/bands/the_beatles/
HttpRequest.method
表示请求中使用的HTTP方法的字符串。该值是大写的,如:GET,POST等
HttpRequest.encoding
表示用于解码提交的表单数据的编码的字符串,如果为none,则使用DEFAULT_CHARSET(值为:utf-8),您可以修改此属性以更改访问表单数据时使用的编码方式,任何后续属性访问(例如从GET或读取POST)都将使用新encoding值
HttpRequest.content_type
表示请求的MIME类型的字符串,从CONTENT_TYPE标头解析 。
HttpRequest.content_params
CONTENT_TYPE 字段中包含的键/值参数字典。
HttpRequest.GET
类似于字典的对象,包含所有给定的HTTP GET参数。请参阅以下 QueryDict文档
HttpRequest.POST
类似字典的对象,包含所有给定的HTTP POST参数,前提是请求包含表单数据。请参阅以下QueryDict文档。如果您需要访问请求中发布的原始或非表单数据,请通过该HttpRequest.body属性访问它 。
HttpRequest.COOKIES
包含所有cookie的字典。键和值是字符串。
HttpRequest.FILES
包含所有上传文件的类字典对象。
HttpRequest.META
包含所有可用HTTP标头的字典。可用的标头取决于客户端和服务器,以下是一些示例
CONTENT_LENGTH - 请求正文的长度(作为字符串)。
CONTENT_TYPE - 请求正文的MIME类型。
HTTP_ACCEPT - 响应的可接受内容类型。
HTTP_ACCEPT_ENCODING - 可接受的响应编码。
HTTP_ACCEPT_LANGUAGE - 响应的可接受语言。
HTTP_HOST - 客户端发送的HTTP主机头。
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,如上所述,请求中的任何HTTP头都将转换为META键,方法是将所有字符转换为大写,用下划线替换任何连字符并HTTP_在名称中添加前缀。因此,例如,调用的标头X-Bender将映射到META密钥 HTTP_X_BENDER。
HttpRequest.resolver_match
ResolverMatch表示已解析URL 的实例。此属性仅在URL解析发生后设置,这意味着它在所有视图中都可用,但在URL解析发生之前执行的中间件中不可用(process_view()尽管可以使用它 )。
HttpRequest.get_host()
例: "127.0.0.1:8000"
HttpRequest.get_port()
HttpRequest.get_full_path()
path如果适用,返回加上附加的查询字符串。
例: "/music/bands/the_beatles/?print=true"
HttpRequest.build_absolute_uri
返回绝对URI形式location。如果未提供位置,则位置将设置为request.get_full_path()。
如果该位置已经是绝对URI,则不会更改。否则,绝对URI是使用此请求中可用的服务器变量构建的。
例: "https://example.com/music/bands/the_beatles/?print=true"
HttpRequest.get_signed_cookie
返回已签名cookie的cookie值
HttpRequest.is_secure()
True如果请求是安全的,则返回; 也就是说,如果它是用HTTPS制作的。
HttpRequest.is_ajax()
返回True如果请求被经由制成XMLHttpRequest
HttpRequest.read(size = None)
HttpRequest.readline()
HttpRequest.readlines()
HttpRequest.__iter__()
实现类似文件的接口以从HttpRequest实例读取的方法 。这使得以流式方式消费传入请求成为可能。一个常见的用例是使用迭代解析器处理大型XML有效负载,而无需在内存中构建整个XML树。
