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