request.POST是用來接受從前端表單中傳過來的數(shù)據(jù),比如用戶登錄過程中傳遞過來的username、passwrod等字段。返回類型是字典;
在后臺(tái)進(jìn)行數(shù)據(jù)獲取時(shí),有兩種方法(以u(píng)sername為例):request.POST[‘username’]與request.POST.get(‘username’),那么這兩者有什么不同之處呢?
如果傳遞過來的數(shù)值不為空,那么這兩種方法都沒有錯(cuò)誤,可以得到相同的結(jié)果。但是如果傳遞過來的數(shù)值為空,那么request.POST[‘username’]則會(huì)提示Keyerror錯(cuò)誤,而request.POST.get(‘username’)則不會(huì)報(bào)錯(cuò),而是返回一個(gè)None。舉例來說:
try:
x = request.POST['sth']
except KeyError:
x = None
1
2
3
4
x = request.POST.get('sth')
1
以上兩種寫法是等價(jià)的。
如果數(shù)值不存在的話,我們可以指定顯示的默認(rèn)值:
x = request.POST.get('sth', 'default_value')
1
這里我們可以拿字典對(duì)象來進(jìn)行理解:
list_test = {'a': 1, 'b': 2}
list_test.get('a') # 得到結(jié)果1
list_test.get('c') # 得到結(jié)果none
list_test.get('c', 3) # 得到設(shè)定的默認(rèn)值3
list_test['b'] # 得到結(jié)果 2
list_test['c'] # 返回一個(gè)Keyvalue 錯(cuò)誤類型
-------------------------------
GET一樣:
query = request.GET.get('q', '')
尋找名為 q 的GET參數(shù),而且如果參數(shù)沒有提交,返回一個(gè)空的字符串。
注意在 request.GET 中使用了 get() 方法,這可能讓大家不好理解。這里的 get() 是每個(gè)python的的字典數(shù)據(jù)類型都有的方法。使用的時(shí)候要小心:假設(shè) request.GET 包含一個(gè) 'q' 的key是不安全的,所以我們使用 get('q', '') 提供一個(gè)缺省的返回值'' (一個(gè)空字符串)。如果只是使用 request.GET['q'] 訪問變量,在Get數(shù)據(jù)時(shí) q 不可得,可能引發(fā) KeyError .