【django学习】request.POST与request.POST.get两者主要区别
本文链接:https://blog.csdn.net/xun527/article/details/87777576
request.POST是用来接收前端传过来的数据
一、request.POST.get('sth')与 request.POST ['sth'] - 区别
request.POST['sth']KeyError如果'sth'不在,将提出异常request.POST。
request.POST.get('sth')将返回None如果'sth'不在request.POST。
此外,.get允许您提供默认值的附加参数,如果该键不在字典中,则返回该参数。
例如,request.POST.get('sth', 'mydefaultvalue')
这是任何python字典的行为,并不是特定的request.POST。
二、这两个片段在功能上是相同的:
第一个片段:
try:
x = request.POST['sth']
except KeyError:
x = -1
第二个片段:
x = request.POST.get('sth', -1)
如果数值不存在的话,我们可以指定显示的默认值:
x = request.POST.get('sth', 'default_value')
这里我们可以拿字典对象来进行理解:
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()访问它的主要区别:
使用类似request.POST['sth']意愿的东西 会出现一个关键错误,如果不存在''sth'。但是使用get()方法字典也会为您提供更好的错误处理
request.POST.get('sth')
将返回没有键是'sth不存在',并且通过给第二个参数get()将返回它作为默认值。
data = request.POST.get('sth','my_default_value')
如果'sth'键不存在,则数据中的值将为my_default_value。这是使用get()方法优于普通字典访问的优势。
参考:https://stackoverflow.com/questions/12518517/request-post-getsth-vs-request-poststh-difference