Request对象是什么
当一个页面被请示时,Django会实例化一个包含请求元数据的 HttpRequest 对象(request), 然后调入合适的视图,把request 作为视图函数的第一个参数 传入。
HttpRequest实例的属性包含了关于此次请求的大多数重要信息,以及提供了一些内部方法供我们使用
Request的属性及含义
HttpRequest.scheme
请求的协议,一般为http或者https,字符串格式(以下属性中若无特殊指明,均为字符串格式)
HttpRequest.body
请求主体, 二进制格式
HttpRequest.path
所请求页面的完整路径(但不包括协议以及域名),也就是相对于网站根目录的路径。
HttpRequest.path_info
获取具有 URL 扩展名的资源的附加路径信息。相对于HttpRequest.path,使用该方法便于移植
HttpRequest.method
获取该请求的方法,比如: GET POST DELETE PUT.........
HttpRequest.encoding
获取请求中表单提交数据的编码
HttpRequest.content_type
获取请求的MIME类型(从CONTENT_TYPE头部中获取),django1.10的新特性。
HttpRequest.content_params
获取CONTENT_TYPE中的键值对参数,并以字典的方式表示,django1.10的新特性
HttpRequest.GET
返回一个 querydict 对象,该对象包含了所有的HTTP GET参数
HttpRequest.POST
返回一个 querydict ,该对象包含了所有的HTTP POST参数,通过表单上传的所有 字符 都会保存在该属性中
HttpRequest.COOKIES
返回一个包含了所有cookies的字典
HttpRequest.FILES
返回一个包含了所有的上传文件的 querydict 对象。通过表单所上传的所有 文件 都会保存在该属性中, key的值是input标签中name属性的值,value的值是一个UploadedFile对象
HttpRequest.META
返回一个包含了所有http头部信息的字典
HttpRequest.session
中间件属性
HttpRequest.site
中间件属性
HttpRequest.user
表示当前登录的用户,一般是请求认证类通过后返回的user对象
Request对象的方法
HttpRequest.get_host()
返回请求的源主机 如: 127.0.0.1:8000
HttpRequest.get_port()
返回请求端口, django1.9的新特性
HttpRequest.get_full_path()
返回完整路径,并包括附加的查询信息, 如: /users/?name=张三
HttpRequest.bulid_absolute_uri(location)
返回location的绝对uri,location默认为request.get_full_path(),如: http://127.0.0.1:8000/users/?name=张三