類的原型:class QueryDict[source]django
在HttpRequest對象中,GET和POST屬性都是一個django.http.QueryDict
的實例。也就是說你能夠按本文下面提供的方法操做request.POST和request.GET。app
request.POST或request.GET的QueryDict都是不可變,只讀的。若是要修改它,須要使用QueryDict.copy()方法,獲取它的一個拷貝,而後在這個拷貝上進行修改操做。編碼
QueryDict 實現了Python字典數據類型的全部標準方法,由於它是字典的子類。url
不一樣之處在於下面:code
QueryDict實例化方法。注意:QueryDict的鍵值是能夠重複的!對象
>>> QueryDict('a=1&a=2&c=3') <QueryDict: {'a': ['1', '2'], 'c': ['3']}>
若是須要實例化能夠修改的對象,添加參數mutable=True。字符串
Django1.11中的新功能。get
循環可迭代對象中的每一個元素做爲鍵值,並賦予一樣的值(來至value參數)。原型
>>> QueryDict.fromkeys(['a', 'a', 'b'], value='val') <QueryDict: {'a': ['val', 'val'], 'b': ['val']}>
用新的QueryDict或字典更新當前QueryDict。相似dict.update()
,可是追加內容,而不是更新並替換它們。 像這樣:string
>>> q = QueryDict('a=1', mutable=True) >>> q.update({'a': '2'}) >>> q.getlist('a') ['1', '2'] >>> q['a'] # returns the last '2'
相似dict.items()
,若是有重複項目,返回最近的一個,而不是都返回:
>>> q = QueryDict('a=1&a=2&a=3') >>> q.items() [('a', '3')]
相似dict.values()
,可是隻返回最近的值。 像這樣:
>>> q = QueryDict('a=1&a=2&a=3') >>> q.values() ['3']
使用copy.deepcopy()返回QueryDict對象的副本。 此副本是可變的!
返回鍵對應的值列表。 若是該鍵不存在而且未提供默認值,則返回一個空列表。
爲list_
設置給定的鍵。
將鍵追加到內部與鍵相關聯的列表中。
相似dict.setdefault(),爲某個鍵設置默認值。
相似setdefault(),除了它須要的是一個值的列表而不是單個值。
相似items(),只是它將其中的每一個鍵的值做爲列表放在一塊兒。 像這樣:
>>> q = QueryDict('a=1&a=2&a=3') >>> q.lists() [('a', ['1', '2', '3'])]
返回給定鍵的值的列表,並從QueryDict中移除該鍵。 若是鍵不存在,將引起KeyError。 像這樣:
>>> q = QueryDict('a=1&a=2&a=3', mutable=True) >>> q.pop('a') ['1', '2', '3']
刪除QueryDict任意一個鍵,並返回二值元組,包含鍵和鍵的全部值的列表。在一個空的字典上調用時將引起KeyError。 像這樣:
>>> q = QueryDict('a=1&a=2&a=3', mutable=True) >>> q.popitem() ('a', ['1', '2', '3'])
將QueryDict轉換爲Python的字典數據類型,並返回該字典。
若是出現重複的鍵,則將全部的值打包成一個列表,最爲新字典中鍵的值。
>>> q = QueryDict('a=1&a=3&a=5') >>> q.dict() {'a': '5'}
已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/'