django接收到http请求之后, 会根据http请求携带的参数以及报文信息创建一个WSGIRequest对象, 并且作为视图函数的第一个参数传递给视图函数, 也就是reques参数
通过该对象我们可以找到客户端上传的所有信息
django.core.handlers.wsgi.WGSIRequest
导入方式:
from django.core.handlers.wsgi import WSGIRequest
WSGIRequest对象上大部分的属性都是只读的, 因为这些属性从客户端传上来的, 没必要做任何修改
常用属性详解:
path: 请求服务器的完整路径, 但不包括域名和参数, request.path
method: 代表当前请求的http的方法, 比如: GET, POST
GET: django.http.request.QueryDict对象, 操作类似字典, 这个属性是get请求的参数
POST: django.http.request.QueryDict对象, 操作类似字典, 这个属性包括了所有POST上传来的参数
FILES: django.http.req.QueryDict对象, 这个属性包括了所有上传的文件
COOKIES: 一个标准的python字典, 包含了所有的cookie, 键值对都是字符串类型
session: 一个类似于字典的对象, 用来操作服务器的session
META: 存储的客服端发送上来的所有header信息
META常用属性
- CONTENT_LENGTH: 请求的正文的长度(是一个字符串)
- CONTENT_TYPE: 请求的正文的MIME类型
- HTTP_ACCEPT: 响应课结束后肚饿Context-Type
- HTTP_ACCEPT_LANGUAGE: 响应可接收的语言
- HTTP_ACCEPT_ENCODING: 响应可接收的编码
- HTTP_HOST:客户端发送的HOST值
- HTTP_REFETRT: 在访问这个页面上一个页面的url
- QUERY_STRING: 单个字符串形式的查询字符串(未解析过的形式)
- REMOTE_ADDR: 客户端的IP地址, 如果服务器做反向代理或者负载均衡, 那么返回值是127.0.0.1,这时使用HTTP_X_FORWARDFD_FOR来获取
-
- REMOTE_HOST: 客户端的主机名
- REQUEST_METHOD: 请求方法: 一个字符串类似于GET
- SERVER_NAME: 服务器域名
- SERVER_PORT: 服务器端口号面试一个字符串类型
is_secure(): 是否是采用https协议
is_ajax(): 是否采用ajax发送的请求,原理就是判断请求头中是否存在X-Requested-With: XMLHtppRequest
get_host(): 服务器的域名, 如果在访问时还有端口号, 那就会加上端口号
get_full_path(): 返回完整的path, 如果有查询字符串,还会加上查询字符串
get_raw_uri(): 获取请求的完整url