1.属性

  1. path:表示提交请求页面完整地址的字符串,不包括域名,如"/music/bands/the_beatles/"。
  2. method:表示提交请求使用的HTTP方法。(GET、POST)
  3. GET:一个类字典对象,包含所有的HTTP的GET参数的信息。
  4. POST:一个类字典对象,包含所有的HTTP的POST参数的信息。注意: POST 并不 包含文件上传信息。
  5. REQUEST:为了方便而创建,这是一个类字典对象,先搜索 POST ,再搜索 GET 。强烈建议使用 GET 和 POST,而不是 REQUEST 。
  6. COOKIES:一个标准的Python字典,包含所有cookie。键和值都是字符串。
  7. FILES:一个类字典对象,包含所有上传的文件。 FILES 的键来自 <input type="file" name="" /> 中的 name。 FILES 的值是一个标准的Python字典,包含以下三个键: filename :字符串,表示上传文件的文件名。content-type :上传文件的内容类型。content :上传文件的原始内容。注意 FILES 只在请求的方法是 POST,并且提交的 <form> 包含enctype="multipart/form-data"时才包含数据。否则, FILES 只是一个空的类字典对象。
  8. META:

    一个标准的Python字典,包含所有有效的HTTP头信息。有效的头信息与客户端和服务器有关。这里有几个例子:

    CONTENT_LENGTH: 指定包含于请求或响应中数据的字节长度。

    CONTENT_TYPE:标明发送或者接收的实体的MIME类型。

    QUERY_STRING :未解析的原始请求字符串。

    REMOTE_ADDR :客户端IP地址。

    REMOTE_HOST :客户端主机名。

    SERVER_NAME :服务器主机名。

    SERVER_PORT :服务器端口号。

    在 META 中有效的任一HTTP头信息都是带有 HTTP_前缀的键,例如:

    HTTP_ACCEPT_ENCODING :定义客户端可以理解的编码机制。

    HTTP_ACCEPT_LANGUAGE :定义客户端乐于接受的自然语言列表。

    HTTP_HOST :客户端发送的 Host 头信息。

    HTTP_REFERER :被指向的页面,如果存在的。

    HTTP_USER_AGENT :客户端的user-agent字符串。

    HTTP_X_BENDER : X-Bender 头信息的值,如果已设的话。

  9. user:一个 django.contrib.auth.models.User 对象表示当前登录用户。

  10. session:一个可读写的类字典对象,表示当前session。仅当Django已激活session支持时有效。

  11. raw_post_data:POST的原始数据。 用于对数据的复杂处理。

2.方法

  1. __getitem__(key):请求所给键的GET/POST值,先查找POST,然后是GET。若键不存在,则引发异常 KeyError。该方法使用户可以以访问字典的方式来访问一个 HttpRequest实例。例如, request["foo"] 和先检查 request.POST["foo"] 再检查request.GET["foo"] 一样。
  2. has_key():返回 True 或 False,标识 request.GET 或 request.POST 是否包含所给的键。
  3. get_full_path():返回 path
  4. is_secure():如果请求是安全的,则返回 True 。也就是说,请求是以HTTPS的形式提交的。

3.Querty对象

在一个 HttpRequest 对象中, GET和POST属性都是 django.http.QueryDict 的实例. QueryDict 是一个类似字典的类,被设计成可以处理同一个键有多个值的情况.这是很必要的,因为有些 HTML 表单元素,特别是``<select multiple="multiple">``,使用一个键来传递多个值

QueryDict 实例是不可变对象,除非你创建他们的一个拷贝.这意味着你不能直接改变 request.POST 和 request.GET 的值.

QueryDict 实现了所有的标准字典方法,因为它就是 dictionary 的一个子类.下文中对与标准字典不一致的地方做了标注:

__getitem__(key) -- 返加给定键的值. 如果该键有多个值, __getitem__ 返回最后一个值.

__setitem__(key, value) -- 将 key 的值设置为 [value] (一个Python 列表,只有一个元素 value).注意,这个方法象其它字典方法一个拥有副作用,只能被一个可变的 QueryDict 对象调用.(一个通过`` copy()``创建的副本).

__contains__(key) -- 如果给定键存在,返回 True. 它允许你这么干: if "foo" in request.GET.

get(key, default) --类似 __getitem__() ,如果该键不存在,返回一个默认值.

has_key(key)

setdefault(key, default) -- 类似标准字典的 setdefault(),不同之处在于它内部使用的是 __setitem__().

update(other_dict) -- 类似标准字典的 update(), 唯一的不同是它将 other_dict 的元素追加到(而不是替换到)当前字典中. 示例:

>>> q = QueryDict('a=1')
        >>> q = q.copy() # to make it mutable
        >>> q.update({'a': '2'})
        >>> q.getlist('a')
        ['1', '2']
        >>> q['a'] # returns the last
        ['2']

items() -- 类似标准字典的 items() 方法, 类似 __getitem__() 的逻辑,它使用最后一个值. 示例:

>>> q = QueryDict('a=1&a=2&a=3')
        >>> q.items()
        [('a', '3')]

values() -- 类似标准字典的 values() 方法,类似 __getitem__() 的逻辑,它使用最后一个值.示例:

>>> q = QueryDict('a=1&a=2&a=3')
        >>> q.values()
        ['3']

除了这些之外,``QueryDict`` 还拥有下列方法:

copy() -- 返回当前对象的一个拷贝,它使用标准库中的 深拷贝 方法. 这个拷贝是可变的,也就是说你可以改变这个拷贝的值.

getlist(key) -- 以一个Python列表的形式返回指定键的值.若该键不存在,返回一个空的列表.该列表是以某种方式排序的.

setlist(key, list_) -- 不同于 __setitem__() ,将给定的键的值设置为一个列表.

appendlist(key, item) -- 将给定键对应的值(别忘了,它是一个列表)追加一个 item.

setlistdefault(key, default_list) -- 就象 setdefault ,不过它接受一个列表作为值而不是一个单一的值.

lists() -- 就象 items(),不过它包含所有的值(以列表的方式):

>>> q = QueryDict('a=1&a=2&a=3')
        >>> q.lists()
        [('a', ['1', '2', '3'])]

urlencode() -- 以一个查询字符串的形式返回一个字符串. Example: "a=2&b=3&b=5".

python request(HttpRequest对象)请求的属性、方法笔记的更多相关文章

  1. Python面向对象静态方法,类方法,属性方法

    Python面向对象静态方法,类方法,属性方法 属性: 公有属性 (属于类,每个类一份) 普通属性 (属于对象,每个对象一份) 私有属性 (属于对象,跟普通属性相似,只是不能通过对象直接访问) 方法: ...

  2. django.http.request中HttpRequest对象的一些属性与方法

    HttpRequest对象的属性 属性 描述 path 表示提交请求页面完整地址的字符串,不包括域名,如 "/music/bands/the_beatles/". method 表 ...

  3. python中静态方法、类方法、属性方法区别

    在python中,静态方法.类方法.属性方法,刚接触对于它们之间的区别确实让人疑惑. 类方法(@classmethod) 是一个函数修饰符,表是该函数是一个类方法 类方法第一个参数是cls,而实例方法 ...

  4. python 面向对象静态方法、类方法、属性方法、类的特殊成员方法

    静态方法:只是名义上归类管理,实际上在静态方法里访问不了类或实例中的任何属性. 在类中方法定义前添加@staticmethod,该方法就与类中的其他(属性,方法)没有关系,不能通过实例化类调用方法使用 ...

  5. JavaScript对象就是一组属性(方法)的集合

    在JavaScript中,每个对象可以看作是多个属性(方法)的集合,引用一个属性(方法) 很简单,即: 对象名.属性(方法)名 除此之外,还可以用方括号的形式来引用: 对象名[“属性(方法)名”] 注 ...

  6. js调用activeX插件 报异常:TypeError:对象不支持 属性方法

    部署之后的js网页如果调用没有签名的 ocx/dll 插件的话会报异常:TypeError:对象不支持 “init” 属性方法 (init为插件公开的方法) 但是如果写一个htm本地文件去调用插件,和 ...

  7. Python中的对象行为与特殊方法(二)类型检查与抽象基类

    类型检查 创建类的实例时,该实例的类型为类本身: class Foo(object): pass f = Foo() 要测试实例是否属于某个类,可以使用type()内置函数: >>> ...

  8. Python中的对象行为与特殊方法(一)对象的创建与销毁

    Python中类调用__new__()类方法来创建实例,调用__init__()方法来初始化对象,对象的销毁则调用__del__()方法. __new__()方法第一个参数为类cls,通常返回cls的 ...

  9. mysqli类的对象和其属性方法;mysqli类面向过程的属性和方法

    mysqli 方法的概述 mysqli 类 面向对象接口 面向过程接口   描述 属性 $mysqli::affected_rows mysqli_affected_rows() 获取上次 Mysql ...

  10. DOM中document对象的常用属性方法

    每个载入浏览器的 HTML 文档都会成为 Document 对象. Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问. 属性 1  document.anchors  返 ...

随机推荐

  1. 12 October

    次小生成树 http://poj.org/problem?id=1679 不难得出,次小生成树可以由最小生成树更换一条边得到. 首先构造原图的最小生成树,然后枚举每一条不在最小生成树中的边 (u, v ...

  2. (转)Hyper-v 安装CentOS 7 (其他虚拟机一样参考)

    转:https://www.cnblogs.com/dunitian/p/4976077.html 平台之大势何人能挡? 带着你的Net飞奔吧!http://www.cnblogs.com/dunit ...

  3. 表单修饰符 number、trim、lazy

    number修饰符 <input type="number" v-model.number="age"> 结论:age 类型则为number,非字符 ...

  4. NuGet-Doc:承载自己的 NuGet 源

    ylbtech-NuGet-Doc:承载自己的 NuGet 源 1.返回顶部 1. 可能希望将包仅发布到有限受众(例如,组织或工作组),而不是将其公开发布. 此外,一些公司可能希望限制其开发人员可以使 ...

  5. JS-DOM Event

    DOM Level 0 Events:绑定到 DOM 的属性上,找不到官方文档 DOM0 是在 W3C 进行标准备化之前出现的,实际上是未形成标准的试验性质的初级阶段的 DOM. var tdiv = ...

  6. Oracle-创建索引分区

    对大数据量索引进行分区同样能够优化应用系统的性能.一般来说,如果索引所对应的表的数据量非常大,比如几百万甚至上千万条数据,则索引也会占用很大的空间,这时,建议对索引进行分区. Oracle索引分区分为 ...

  7. SSH 的原理和实践

    最近自己在学习使用SSH,现将自己理解的SSH原理和实践SSH的操作写成一篇博客,以供日后查看. 一.SSH是什么?为什么会出现SSH? SSH英文全称是Secure Shell,即安全外壳.首先SS ...

  8. vue的概述

    一.Vue的概述 Vue的开发模式 和 之前接触的jQuery.原生JSDOM操作是不同的,之前要想修改试图,首先找元素:在使用Vue时,专心把精力放在修改数据.DOM驱动 ---> 数据驱动. ...

  9. Recurrent Neural Network(3):LSTM Basics and 《Inside Out》

    下图是Naive RNN的Recurrent Unit示意图,可以看到,在每个时间点t,Recurrent Unit会输出一个隐藏状态ht,对ht加工提取后将产生t时刻的输出yt.而在下一个时间节点t ...

  10. 4期Web安全基础

    介绍了web安全的各种常见漏洞.视频卡顿,建议直接看网易出品的白帽子视频. 类似的教程还有,网易白帽子的教程:参考简书https://www.jianshu.com/p/1b372ca96b87 在看 ...