django QueryDict物件
類的原型: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/'