在HttpRequest对象中, GET和POST属性是django.http.QueryDict类的实例。
QueryDict类似字典的自定义类,用来处理单键对应多值的情况。
QueryDict实现所有标准的词典方法。还包括一些特有的方法:
方法
|
描述
|
__getitem__
|
和标准字典的处理有一点不同,就是,如果Key对应多个Value,__getitem__()返回最后一个value。
|
__setitem__
|
设置参数指定key的value列表(一个Python list)。注意:它只能在一个mutable QueryDict 对象上被调用(就是通过copy()产生的一个QueryDict对象的拷贝).
|
get(key,default=None)
|
返回key所对应的value,若key不存在,则返回default的值。如果key对应多个value,get()返回最后一个value。
|
update()
|
参数可以是QueryDict,也可以是标准字典。和标准字典的update方法不同,该方法添加字典 items,而不是替换它们:
>>> 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__():
|
此外, QueryDict也有一些方法,如下表:
方法
|
描述
|
copy()
|
返回对象的拷贝,内部实现是用Python标准库的copy.deepcopy()。该拷贝是mutable(可更改的) — 就是说,可以更改该拷贝的值。
|
getlist(key)
|
返回和参数key对应的所有值,作为一个Python list返回。如果key不存在,则返回空list。 It's guaranteed to return a list of some sort..
|
setlist(key,list_)
|
设置key的值为list_ (unlike __setitem__()).
|
appendlist(key,item)
|
添加item到和key关联的内部list.
|
setlistdefault(key,list)
|
和setdefault有一点不同,它接受list而不是单个value作为参数。
|
lists()
|
和items()有一点不同, 它会返回key的所有值,作为一个list, 例如:
>>> q = QueryDict('a=1&a=2&a=3')
>>> q.lists()
[('a', ['1', '2', '3'])]
|
urlencode()
|
返回一个以查询字符串格式进行格式化后的字符串(例如:"a=2&b=3&b=5")。
|