1. 方法

例:request.get_full_path()

方法 描述 例子
get_full_path() 返回包含完整参数列表的path 比如:/music/bands/the_beatles/?print=true
is_secure() HTTPS 为 True
is_ajax() 如果请求通过 XMLHttpRequest 生成则返回 True

2. 属性列表

例:request.scheme

2.1. 【速查表单】

属性名 描述
scheme 请求协议种类
body 原始HTTP请求正文
path 当前请求完整路径(不包括协议名、域名)
path_info 代替 path 显示路径
encoding 提交数据的编码方式(None则使用DEFAULT_CHARSET设置)
content_type 从CONTENT_TYPE头解析的请求的MIME类型
content_params 包含在CONTENT_TYPE标题中的键/值参数
method 请求使用的HTTP方法(默认大写)
GET GET请求中所有参数
POST POST请求中所有参数,以及包含表单数据的字典
COOKIES 所有Cookie信息
FILES 上传文件数据
META 所有HTTP头部信息
session 表示当前会话,可读写。由SessionMiddleware设置
user 表示当前登录用户的 AUTH_USER_MODEL 实例,由AuthenticationMiddleware设置

2.2. 部分属性

属性名 描述 类型 备注
scheme 请求协议种类 字符串 http / https
body 原始HTTP请求正文 bytes类型 常用于二进制图像、XML等非HTML形式数据
path 当前请求完整路径(不包括协议名、域名) 字符串 例 /music/bands/
path_info 代替 path 显示路径 字符串 使用情况跟 Web 服务器配置有关
encoding 提交数据的编码方式(None则使用DEFAULT_CHARSET设置) 字符串 可写,可修改表单数据编码
content_type 从CONTENT_TYPE头解析的请求的MIME类型 MIME
content_params 包含在CONTENT_TYPE标题中的键/值参数 字典

2.3. method、GET、POST、FILES

2.3.1. method:请求使用的HTTP方法(默认大写)

字符串

  1. # 判断请求类型
  2. if request.method == 'GET':
  3. #...

2.3.2. GET:GET请求中所有参数

QueryDict 对象

参考 13. QueryDict 对象

2.3.3. POST:POST请求中所有参数,以及包含表单数据的字典

QueryDict 对象
不包含文件上传数据。判断是否是POST类型,用 if request.method == 'POST'

2.3.4. FILES:上传文件数据

类似字典,键为 name,值为 UploadedFile

  1. <form method="POST" enctype="multipart/form-data">
  2. <input type="file" name="" />

2.4. COOKIES:所有Cookie信息

字典,键值字符串

可以用类似字典的方式在Cookie中读写数据,不要写敏感信息

  1. # 设置 Cookies
  2. response = HttpResponse('anything')
  3. response.set_cookie('username','jack')
  4. # 获取 Cookies
  5. request.COOKIES.get('username')
  6. # 删除 Cookies
  7. response = HttpResponse('any')
  8. response.delete_cookie('username')

2.5. META:头部信息

所有HTTP头部信息(字典)

  • CONTENT_LENGTH —— 请求正文的长度(以字符串计)。
  • CONTENT_TYPE —— 请求正文的MIME类型。
  • HTTP_ACCEPT —— 可接收的响应Content-Type。
  • HTTP_ACCEPT_ENCODING —— 可接收的响应编码类型。
  • HTTP_ACCEPT_LANGUAGE —— 可接收的响应语言种类。
  • HTTP_HOST —— 客服端发送的Host头部。
  • HTTP_REFERER —— Referring页面。
  • HTTP_USER_AGENT —— 客户端的user-agent字符串。
  • QUERY_STRING —— 查询字符串。
  • REMOTE_ADDR —— 客户端的IP地址。获取客户端的ip信息
  • REMOTE_HOST —— 客户端的主机名。
  • REMOTE_USER —— 服务器认证后的用户,如果可用。
  • REQUEST_METHOD —— 请求方法的字符串,GET、POST等。
  • SERVER_NAME —— 服务器的主机名。
  • SERVER_PORT —— 服务器的端口(字符串)。

2.6. session:当前会话

表示当前会话,可读写。由SessionMiddleware设置

类似字典

保存用户状态,回话过程等等,靠的就是这个中间件和这个属性

  1. request.session['session_name'] = 'value' # 设置 Session
  2. request.session.get('session_name') # 获取 Session
  3. del request.session['session_name'] # 删除 Session
  4. # templates.py
  5. {{ request.session.session_name }}

2.7. user

表示当前登录用户的 AUTH_USER_MODEL 实例,由AuthenticationMiddleware设置

如果用户未登录则设置为 AnonymousUser 实例:

  1. # 判断用户是否登录
  2. if request.user.is_authenticated:
  3. # logged in
  4. else:
  5. # anonymous