QueryDIct对象

  • QueryDIct对象
在HttpRequest 对象中,GET 和POST 属性是django.http.QueryDict 的实例,它是一个自
定义的类似字典的类,用来处理同一个键带有多个值。这个类的需求来自某些HTML 表单
元素传递多个值给同一个键
request.POST 和request.GET 的QueryDict 在一个正常的请求/响应循环中是不可变的。若
要获得可变的版本,需要使用.copy()。
  • 实例化QueryDict
QueryDict.__init__(query_string=None, mutable=False, encoding=None)
  • 示例
>>> QueryDict('a=1&a=2&c=3')
<QueryDict: {'a': ['1', '2'], 'c': ['3']}>
  • 通过fromkeys实例化QueryDict (1.11新增)
classmethod QueryDict.fromkeys(iterable, value=”, mutable=False, encoding=None)
  • 示例
>>> QueryDict.fromkeys(['a', 'a', 'b'], value='val')
<QueryDict: {'a': ['val', 'val'], 'b': ['val']}>
  • QueryDict方法
QueryDict.get(key, default=None)  #有多个值的话只能取最后一个,可以通过getlist取
QueryDict.setdefault(key, default=None)[source]
QueryDict.update(other_dict)
QueryDict.items()
QueryDict.values()#用values提取数据有多个值的话会丢失数据
QueryDict.copy()
QueryDict.getlist(key, default=None)
QueryDict.setlist(key, list_)[source]
QueryDict.appendlist(key, item)
QueryDict.setlistdefault(key, default_list=None)
QueryDict.lists()
QueryDict.pop(key)
QueryDict.popitem()
QueryDict.dict() 转换成字典多个值会丢参数
QueryDict.urlencode(safe=None)  #转换成url格式字符串
  • ipython演示

执行下面命令进入ipython交互界面

python manage.py shell
In [1]: from django.http import QueryDict

In [2]: GET=QueryDict("a=1&b=2&b=3")

In [3]: GET
Out[3]: <QueryDict: {'a': ['1'], 'b': ['2', '3']}>  #返回结果和浏览器中传入参数?a=1&b=2&b=3类似
  • 取值
In [1]: from django.http import QueryDict

In [2]: GET=QueryDict("a=1&b=2&b=3")

In [3]: GET
Out[3]: <QueryDict: {'a': ['1'], 'b': ['2', '3']}>

In [4]: GET.get('a')
Out[4]: '1'

In [5]: GET.get('b')
Out[5]: '3'

In [6]: GET.getlist('b')
Out[6]: ['2', '3']

In [7]: GET.values()
Out[7]: <generator object MultiValueDict.values at 0x7fd2420f6eb8>
In [9]: [k for k in GET.values()]
Out[9]: ['1', '3']

In [10]: GET.urlencode()
Out[10]: 'a=1&b=2&b=3'
原文地址:https://www.cnblogs.com/jiaqili/p/14322066.html