在一个 HttpRequest 对象中, GET 和 POST 属性都是 django.http.QueryDict 的实例。 QueryDict 是一个类似于字典的类,专门用来处理用一个键的多值。当处理一些HTML表单中的元素,特别是 <select multiple="multiple"> 之类传递同一key的多值的元素时,就需要这个类了。

QueryDict 实例是不可变的,除非创建了一个 copy() 副本。也就是说不能直接更改 request.POST 和 request.GET 的属性。

QueryDict 实现了所有标准的字典的方法,因为它正是字典的一个子类。与其不同的东西已在下表中列出。

QueryDicts 与标准字典的区别

方法

与标准字典实现的不同

__getitem__

与一个字典一样。但是,当一个键有多个值时, __getitem__() 返回最后一个值。

__setitem__

将所给键的值设为 [value] (一个只有一个 value 元素的 Python列表)。 注意,因对其它的字典函数有副作用,故它只能被称为一个可变的 QueryDict (通过 copy() 创建)。

get()

如果一个键多个值,和 __getitem__ 一样, get() 返回最后一个值。

update()

参数是一个 QueryDict 或标准字典。 和标准字典的

update 不同,这个方法*增加*而不是替换一项内容:

>>> q = QueryDict('a=1')

>>> q = q.copy() # 使其可变

>>> q.update({'a': '2'})

>>> q.getlist('a')

['1', '2']

>>> q['a'] # 返回最后一个值

['2']

items()

和标准字典的 items() 方法一样, 不同的是它和 __getitem()__ 一样,返回最后一个值:

>>> q = QueryDict('a=1&a=2&a=3')

>>> q.items()

[('a', '3')]

values()

和标准字典的 values() 方法一样, 不同的是它和 __getitem()__ 一样,返回最后一个值。

附加的 (非字典的) QueryDict 方法

方法

描述

copy()

返回一个对象的副本,使用的是Python标准库中的 copy.deepcopy() 。 该副本是可变的,也就是说,你能改变它的值。

getlist(key)

以Python列表的形式返回所请求键的数据。若键不存在则返回空列表。它保证了一定会返回某种形式的list。

setlist(key, list_)

将所给键的键值设为 list_ (与 __setitem__() 不同)。

appendlist(key, item)

在 key 相关的list上增加 item 。

setlistdefault(key, l)

和 setdefault 一样, 不同的是它的第二个参数是一个列表,而不是一个值。

lists()

和 items() 一样, 不同的是它以一个列表的形式返回字典每一个成员的所有值。 例如:

>>> q = QueryDict('a=1&a=2&a=3')

>>> q.lists()

[('a', ['1', '2', '3'])]

urlencode()

返回一个请求字符串格式的数据字符串(如, "a=2&b=3&b=5" )。

最新文章

  1. DBCP 配置备注
  2. OpenMesh 将默认的 float 类型改为 double 类型
  3. SQL2008中的Sequence
  4. 基于jFinal建立简单的服务端-接收请求并返回指定内容
  5. Java for LeetCode 060 Permutation Sequence
  6. Linux下的sniffer工具--TcpDump的安装和使用
  7. 多线程/进度条应用(progressbar)
  8. 通用函数get和set
  9. Struts2WebUtil
  10. 51Testing丛书新作《软件测试工程师面试秘籍》
  11. GCC相关的环境变量
  12. Linux 分区初始化为物理卷,把物理卷加入卷组
  13. SecureCRT安装
  14. ASP.NET Core中使用GraphQL - 最终章 Data Loader
  15. python 线程Queue 用法代码展示
  16. cocos2dx添加新的类后出现错误undefined reference to的解决办法
  17. 关于java中Static关键字的加强理解
  18. MYSQL数据库中,常见的数据类型有哪些?它们与java中的数据类型如何对应
  19. Django:haystack全文检索详细教程
  20. zookeeper单机版安装

热门文章

  1. c#反射动态创建窗体
  2. 【插件式框架探索系列】应用程序域(AppDomain)
  3. 泡泡一分钟:Visual Odometry Using a Homography Formulation with Decoupled Rotation and Translation Estimation Using Minimal Solutions
  4. Web.Config中配置字符串含引号的处理
  5. Spring 中使用了哪些设计模式?
  6. 【Linux】Jenkins以war包运行及开机启动配置(四)
  7. 报错:MetaException(message:Version information not found in metastore. )
  8. Spring Cloud Config 分布式配置管理 5.3
  9. Python - Django - request 对象
  10. Delphi 调用控件的过程,初学者都想知道