属性介绍:
- request.scheme
请求的协议种类(http/https) - request.path
请求页面的完整路径(get_full_path()在path的基础上还有查询条件) - HttpRequest.body
原始的 HTTP 请求体作为一个字节字符串。这对于以不同方式处理非常规 HTML 表单的数据很有用:二进制图像,XML 有效负载等。对 于处理传统的表单数据,使用 HttpRequest.POST。
你也可以使用类似文件的接口 HttpRequest.read() 或 HttpRequest.readline() 从 HttpRequest 中读取。在使用这些 I/O 流方法中的任何一种方法读取请求后,访问 body 属性会产生 RawPostDataException。 - HttpRequest.method
表请求中使用的 HTTP 方法的字符串。保证是大写字母 - HttpRequest.encoding
表示当前用于解码表单提交数据的编码的字符串(或 None,表示使用 DEFAULT_CHARSET 设置)。你可以写入这个属性来改变访问表单数据时使用的编码。任何后续的属性访问(如从 GET 或 POST 中读取)将使用新的 encoding 值。如果你知道表单数据不是在 DEFAULT_CHARSET 编码中,这很有用。
5.** HttpRequest.content_type**
代表请求的 MIME 类型的字符串,从 CONTENT_TYPE 头解析。 - HttpRequest.content_params
CONTENT_TYPE 头中包含的键/值参数字典。 - HttpRequest.COOKIES
一个包含所有 cookies 的字典。键和值是字符串。 - HttpRequest.FILES
一个类似字典的对象,包含所有上传的文件。FILES 中的每个键是< input type="file" name="" > 中的 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 主机头。
- HTTP_REFERER —— referrer 页面,如果有的话。
- 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_` 前缀。
- HttpRequest.headers
一个不区分大小写的类似字典的对象,提供对请求中所有 HTTP 前缀头的访问(加上 Content-Length 和 Content-Type)。
当显示每个请求头时,请求头名称都是用标题的形式来表示的(例如 User-Agent)。你可以不分大小写的访问请求头
例如在 Django 模板中使用,请求头也可以用下划线代替连字符来查询:
{{ request.headers.user_agent }} - HttpRequest.resolver_match
ResolverMatch 的一个实例,代表解析后的 URL。这个属性只有在 UR L解析发生后才会被设置,这意味着它在所有的视图中都是可用的,但在 URL 解析发生前被执行的中间件中则不可用(不过你可以在 process_view() 中使用它)。
12.** HttpRequest.session**
来自 SessionMiddleware。一个可读可写的,类似字典的对象,代表当前会话。 - HttpRequest.user
从 AuthenticationMiddleware。AUTH_USER_MODEL 的一个实例,代表当前登录的用户。如果用户当前没有登录,user 将被设置为一个 AnonymousUser 的实例。你可以用 is_authenticated 来区分它们:if request.user.is_authenticated: # Do something for logged-in users. else: # Do something for anonymous users.
方法:
- HttpRequest.get_port()
使用 HTTP_X_FORWARDED_PORT (如果 :set:USE_X_FORWARDED_PORT已启用)和 SERVER_PORT META 变量中的信息,按顺序返回请求的起始端口。 - HttpRequest.get_full_path()
返回 path,加上附加的查询字符串(如果适用)。
例如:"/music/bands/the_beatles/?print=true" - HttpRequest.get_host()
使用 HTTP_X_FORWARDED_HOST (如果 USE_X_FORWARDED_HOST 已启用)和 HTTP_HOST 头信息,按顺序返回请求的发起主机。如果它们没有提供一个值,则该方法使用 SERVER_NAME 和 SERVER_PORT 的组合, - HttpRequest.build_absolute_uri(location=None)
返回 location 的绝对 URI 形式。如果没有提供 location,location 将被设置为 request.get_full_path()。
如果 location 已经是一个绝对 URI,它将不会被改变request.build_absolute_uri() 'https://example.com/music/bands/the_beatles/?print=true' request.build_absolute_uri('/bands/') 'https://example.com/bands/' request.build_absolute_uri('https://example2.com/bands/') 'https://example2.com/bands/' - HttpRequest.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)
request.get_signed_cookie('name') 'Tony' request.get_signed_cookie('name', salt='name-salt') 'Tony' # assuming cookie was set using the same salt request.get_signed_cookie('nonexistent-cookie') ... KeyError: 'nonexistent-cookie' request.get_signed_cookie('nonexistent-cookie', False) False request.get_signed_cookie('cookie-that-was-tampered-with') ... BadSignature: ... request.get_signed_cookie('name', max_age=60) ... SignatureExpired: Signature age 1677.3839159 > 60 seconds request.get_signed_cookie('name', False, max_age=60) False
浙公网安备 33010602011771号