类的原型:class QueryDict[source]

在HttpRequest对象中,GET和POST属性都是一个django.http.QueryDict的实例。也就是说你可以按本文下面提供的方法操作request.POST和request.GET。

request.POST或request.GET的QueryDict都是不可变,只读的。如果要修改它,需要使用QueryDict.copy()方法,获取它的一个拷贝,然后在这个拷贝上进行修改操作。

一、方法

QueryDict 实现了Python字典数据类型的所有标准方法,因为它是字典的子类。

不同之处在于下面:

1. QueryDict.init(query_string=None, mutable=False, encoding=None)[source]

QueryDict实例化方法。注意:QueryDict的键值是可以重复的!

>>> QueryDict('a=1&a=2&c=3')
<QueryDict: {'a': ['1', '2'], 'c': ['3']}>

如果需要实例化可以修改的对象,添加参数mutable=True。

2. classmethod QueryDict.fromkeys(iterable, value='', mutable=False, encoding=None)[source]

Django1.11中的新功能。

循环可迭代对象中的每个元素作为键值,并赋予同样的值(来至value参数)。

>>> QueryDict.fromkeys(['a', 'a', 'b'], value='val')
<QueryDict: {'a': ['val', 'val'], 'b': ['val']}>

3. QueryDict.update(other_dict)

用新的QueryDict或字典更新当前QueryDict。类似dict.update(),但是追加内容,而不是更新并替换它们。 像这样:

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

4. QueryDict.items()

类似dict.items(),如果有重复项目,返回最近的一个,而不是都返回:

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

5. QueryDict.values()

类似dict.values(),但是只返回最近的值。 像这样:

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

6. QueryDict.copy()[source]

使用copy.deepcopy()返回QueryDict对象的副本。 此副本是可变的!

7. QueryDict.getlist(key, default=None)

返回键对应的值列表。 如果该键不存在并且未提供默认值,则返回一个空列表。

8. QueryDict.setlist(key, list_)[source]

list_设置给定的键。

9. QueryDict.appendlist(key, item)[source]

将键追加到内部与键相关联的列表中。

10. QueryDict.setdefault(key, default=None)[source]

类似dict.setdefault(),为某个键设置默认值。

11. QueryDict.setlistdefault(key, default_list=None)[source]

类似setdefault(),除了它需要的是一个值的列表而不是单个值。

12. QueryDict.lists()

类似items(),只是它将其中的每个键的值作为列表放在一起。 像这样:

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

13. QueryDict.pop(key)[source]

返回给定键的值的列表,并从QueryDict中移除该键。 如果键不存在,将引发KeyError。 像这样:

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

14. QueryDict.popitem()[source]

删除QueryDict任意一个键,并返回二值元组,包含键和键的所有值的列表。在一个空的字典上调用时将引发KeyError。 像这样:

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

15. QueryDict.dict()

将QueryDict转换为Python的字典数据类型,并返回该字典。

如果出现重复的键,则将所有的值打包成一个列表,最为新字典中键的值。

>>> q = QueryDict('a=1&a=3&a=5')
>>> q.dict()
{'a': '5'}

16. QueryDict.urlencode(safe=None)[source]

已url的编码格式返回数据字符串。 像这样:

>>> q = QueryDict('a=2&b=3&b=5')
>>> q.urlencode()
'a=2&b=3&b=5'

使用safe参数传递不需要编码的字符。 像这样:

>>> q = QueryDict(mutable=True)
>>> q['next'] = '/a&b/'
>>> q.urlencode(safe='/')
'next=/a%26b/'

第二章:视图层 - 6:QueryDict对象的更多相关文章

  1. Django框架之第四篇(视图层)--HttpRequest对象、HttpResponse对象、JsonResponse、CBV和FBV、文件上传

    视图层 一.视图函数 一个视图函数,简称视图,是一个简单的python函数,它接收web请求并且会返回web响应.响应可以是一张网页的html,一个重定向,或者是一张图片...任何东西都可以.无论是什 ...

  2. Java编程思想_笔记_第二章_一切都是对象

    第二章对于知识只是点到,会在以后章节会详细展开. 笔记的侧重会偏向记录自己知识模糊的地方.比如 xxx 很重要很难很实用,但是已经熟练使用就没有记录,而 “使用对象.成员名称来使用成员变量”,较简单而 ...

  3. TCP/IP详解 卷一(第二章 链路层)

    在TCP/IP协议族中,链路层主要有三个目的: 1.为IP模块发送和接收IP数据报 2.为ARP模块发送ARP请求和接收ARP应答 3.为RARP请求和接收RARP应答 TCP/IP支持多种不同的链路 ...

  4. Python之路【第二十八篇】:django视图层、模块层

    1.视图函数 文件在view_demo 一个视图函数简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XM ...

  5. 3.Django| 视图层| 模板层

    1.视图函数 文件在view_demo 一个视图函数简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XM ...

  6. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  7. ArcGIS API for JavaScript 4.2学习笔记[10] 2D添加指北针widget、视图保存、视图padding(第二章完结)

    这几个例子是第二章除了入门之外比较简单的几个,就做个合集,把最核心的代码(第二参数)和 引用放上来即可,不作多解释. 2D地图添加指北针widget 2D地图一般修正方向为正北方就需要这个widget ...

  8. [Effective Java]第二章 创建和销毁对象

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  9. Java第二章----对象和类

    从第一章到第二章整整隔了一个月的时间,这速度也是慢的无语了.因为这个月负责开发公司一个SaaS类型APP,忙的昏天暗地终于上线了,这才有时间写个博客.本章还是以概念为主,有点枯燥重在理解. 第一节:对 ...

随机推荐

  1. rust实战系列-base64编码

    前言 某些只能使用ASCII字符的场景,往往需要传输非ASCII字符的数据,这时就需要一种编码可以将数据转换成ASCII字符,而base64编码就是其中一种. 编码原理很简单,将原始数据以3字节(24 ...

  2. Mac上安装proxychains4

    brew install proxychains-ng vim /usr/local/etc/proxychains.conf proxychains4 wget www.google.com

  3. C++类对象作为类成员

    //当其他类的对象作为本类的成员 构造的时候先去构造类的对象 再去构造自身 //析构函数: 先进后出 先去构造Phone 再去构造Person Person先退出 Phone后退出 //析构与构造顺序 ...

  4. 使用Python3.7配合协同过滤算法(base on user,基于人)构建一套简单的精准推荐系统(个性化推荐)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_136 时至2020年,个性化推荐可谓风生水起,Youtube,Netflix,甚至于Pornhub,这些在互联网上叱咤风云的流媒体 ...

  5. Odoo14 ir.rule 中的domain查询语句

    # ir.rule 中的domain查询语句 # 当你的字段是many2one.many2many.one2many的时候domain都会强制加上过滤域 # tree显示的时候也会过滤 # m.mod ...

  6. MySQL源码解析之执行计划

    MySQL源码解析之执行计划 MySQL执行计划介绍 MySQL执行计划代码概览 MySQL执行计划总结 一.MySQL执行计划介绍 在MySQL中,执行计划的实现是基于JOIN和QEP_TAB这两个 ...

  7. java-servlet-转发AND路径

    转发: a) 什么是转发?一个web组件将未完成的任务交给另一个web组件继续做.通常是一个servlet将数据获取之后转交给jsp进行展现.注:web组件值得是servlet或者jsp b) 如何转 ...

  8. 删除MySQL数据用户

    mysql删除用户的方法: 1.使用"drop user 用户名;"命令删除: 2.使用"delete from user where user='用户名' and ho ...

  9. Unhandled Exception: MissingPluginException(No implementation found for method launch on channel)

    在添加依赖包时,可能会出现Unhandled Exception: MissingPluginException(No implementation found for method launch o ...

  10. Excel 逻辑函数(一):IF 和 IFS

    IF IF 函数有三个参数,第一个为条件判断,第二个是当条件为真时执行的表达式,第三个是条件为假时执行的表达式. IF(A1="是", A2 * 0.8, 0),如果 A1 单元格 ...