属性介绍:

  1. request.scheme
    请求的协议种类(http/https)
  2. request.path
    请求页面的完整路径(get_full_path()在path的基础上还有查询条件)
  3. HttpRequest.body
    原始的 HTTP 请求体作为一个字节字符串。这对于以不同方式处理非常规 HTML 表单的数据很有用:二进制图像,XML 有效负载等。对 于处理传统的表单数据,使用 HttpRequest.POST。
    你也可以使用类似文件的接口 HttpRequest.read() 或 HttpRequest.readline() 从 HttpRequest 中读取。在使用这些 I/O 流方法中的任何一种方法读取请求后,访问 body 属性会产生 RawPostDataException。
  4. HttpRequest.method
    表请求中使用的 HTTP 方法的字符串。保证是大写字母
  5. HttpRequest.encoding
    表示当前用于解码表单提交数据的编码的字符串(或 None,表示使用 DEFAULT_CHARSET 设置)。你可以写入这个属性来改变访问表单数据时使用的编码。任何后续的属性访问(如从 GET 或 POST 中读取)将使用新的 encoding 值。如果你知道表单数据不是在 DEFAULT_CHARSET 编码中,这很有用。
    5.** HttpRequest.content_type**
    代表请求的 MIME 类型的字符串,从 CONTENT_TYPE 头解析。
  6. HttpRequest.content_params
    CONTENT_TYPE 头中包含的键/值参数字典。
  7. HttpRequest.COOKIES
    一个包含所有 cookies 的字典。键和值是字符串。
  8. HttpRequest.FILES
    一个类似字典的对象,包含所有上传的文件。FILES 中的每个键是< input type="file" name="" > 中的 name。FILES 中的每个值是一个 UploadedFile。
    FILES 只有在请求方法是 POST,并且发布请求的 < form > 有 enctype="multipart/form-data" 的情况下,才会包含数据。否则,FILES 将是一个类似字典的空白对象。
  9. 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_` 前缀。
  10. HttpRequest.headers
    一个不区分大小写的类似字典的对象,提供对请求中所有 HTTP 前缀头的访问(加上 Content-Length 和 Content-Type)。
    当显示每个请求头时,请求头名称都是用标题的形式来表示的(例如 User-Agent)。你可以不分大小写的访问请求头
    例如在 Django 模板中使用,请求头也可以用下划线代替连字符来查询:
    {{ request.headers.user_agent }}
  11. HttpRequest.resolver_match
    ResolverMatch 的一个实例,代表解析后的 URL。这个属性只有在 UR L解析发生后才会被设置,这意味着它在所有的视图中都是可用的,但在 URL 解析发生前被执行的中间件中则不可用(不过你可以在 process_view() 中使用它)。
    12.** HttpRequest.session**
    来自 SessionMiddleware。一个可读可写的,类似字典的对象,代表当前会话。
  12. 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.
    

方法:

  1. HttpRequest.get_port()
    使用 HTTP_X_FORWARDED_PORT (如果 :set:USE_X_FORWARDED_PORT 已启用)和 SERVER_PORT META 变量中的信息,按顺序返回请求的起始端口。
  2. HttpRequest.get_full_path()
    返回 path,加上附加的查询字符串(如果适用)。
    例如:"/music/bands/the_beatles/?print=true"
  3. HttpRequest.get_host()
    使用 HTTP_X_FORWARDED_HOST (如果 USE_X_FORWARDED_HOST 已启用)和 HTTP_HOST 头信息,按顺序返回请求的发起主机。如果它们没有提供一个值,则该方法使用 SERVER_NAME 和 SERVER_PORT 的组合,
  4. 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/'
    
  5. 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
    
posted on 2021-06-19 16:35  x-dai  阅读(321)  评论(0)    收藏  举报