Django 中request对象的属性及方法详解

608 阅读2分钟

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=张三