django.http.request中QueryDict 對象


在一個 HttpRequest 對象中, GET 和 POST 屬性都是 django.http.QueryDict 的實例。 QueryDict 是一個類似於字典的類,專門用來處理用一個鍵的多值。當處理一些HTML表單中的元素,特別是 <select multiple="multiple"> 之類傳遞同一key的多值的元素時,就需要這個類了。

QueryDict 實例是不可變的,除非創建了一個 copy() 副本。也就是說不能直接更改 request.POST 和 request.GET 的屬性。

QueryDict 實現了所有標准的字典的方法,因為它正是字典的一個子類。與其不同的東西已在下表中列出。

QueryDicts 與標准字典的區別

方法

與標准字典實現的不同

__getitem__

與一個字典一樣。但是,當一個鍵有多個值時, __getitem__() 返回最后一個值。

__setitem__

將所給鍵的值設為 [value] (一個只有一個 value 元素的 Python列表)。 注意,因對其它的字典函數有副作用,故它只能被稱為一個可變的 QueryDict (通過 copy() 創建)。

get()

如果一個鍵多個值,和 __getitem__ 一樣, get() 返回最后一個值。

update()

參數是一個 QueryDict 或標准字典。 和標准字典的

update 不同,這個方法*增加*而不是替換一項內容:

>>> q = QueryDict('a=1')

>>> q = q.copy() # 使其可變

>>> q.update({'a': '2'})

>>> q.getlist('a')

['1', '2']

>>> q['a'] # 返回最后一個值

['2']

items()

和標准字典的 items() 方法一樣, 不同的是它和 __getitem()__ 一樣,返回最后一個值:

>>> q = QueryDict('a=1&a=2&a=3')

>>> q.items()

[('a', '3')]

values()

和標准字典的 values() 方法一樣, 不同的是它和 __getitem()__ 一樣,返回最后一個值。

 

 附加的 (非字典的) QueryDict 方法

方法

描述

copy()

返回一個對象的副本,使用的是Python標准庫中的 copy.deepcopy() 。 該副本是可變的,也就是說,你能改變它的值。

getlist(key)

以Python列表的形式返回所請求鍵的數據。若鍵不存在則返回空列表。它保證了一定會返回某種形式的list。

setlist(key, list_)

將所給鍵的鍵值設為 list_ (與 __setitem__() 不同)。

appendlist(key, item)

在 key 相關的list上增加 item 。

setlistdefault(key, l)

和 setdefault 一樣, 不同的是它的第二個參數是一個列表,而不是一個值。

lists()

和 items() 一樣, 不同的是它以一個列表的形式返回字典每一個成員的所有值。 例如:

>>> q = QueryDict('a=1&a=2&a=3')

>>> q.lists()

[('a', ['1', '2', '3'])]

urlencode()

返回一個請求字符串格式的數據字符串(如, "a=2&b=3&b=5" )。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM