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方法(默认大写)
字符串
# 判断请求类型
if request.method == 'GET':
#...
2.3.2. GET:GET请求中所有参数
QueryDict 对象
2.3.3. POST:POST请求中所有参数,以及包含表单数据的字典
QueryDict 对象
不包含文件上传数据。判断是否是POST类型,用 if request.method == 'POST'
2.3.4. FILES:上传文件数据
类似字典,键为 name,值为 UploadedFile
<form method="POST" enctype="multipart/form-data">
<input type="file" name="" />
2.4. COOKIES:所有Cookie信息
字典,键值字符串
可以用类似字典的方式在Cookie中读写数据,不要写敏感信息
# 设置 Cookies
response = HttpResponse('anything')
response.set_cookie('username','jack')
# 获取 Cookies
request.COOKIES.get('username')
# 删除 Cookies
response = HttpResponse('any')
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设置
类似字典
保存用户状态,回话过程等等,靠的就是这个中间件和这个属性
request.session['session_name'] = 'value' # 设置 Session
request.session.get('session_name') # 获取 Session
del request.session['session_name'] # 删除 Session
# templates.py
{{ request.session.session_name }}
2.7. user
表示当前登录用户的 AUTH_USER_MODEL 实例,由AuthenticationMiddleware设置
如果用户未登录则设置为 AnonymousUser 实例:
# 判断用户是否登录
if request.user.is_authenticated:
# logged in
else:
# anonymous