【发布时间】:2012-09-20 18:18:38
【问题描述】:
有什么区别
request.POST.get('sth')
和
request.POST['sth']
没有找到类似的问题,两者对我来说都是一样的,假设我可以单独使用它们但也许我错了,这就是我问的原因。有什么想法吗?
【问题讨论】:
标签: django
有什么区别
request.POST.get('sth')
和
request.POST['sth']
没有找到类似的问题,两者对我来说都是一样的,假设我可以单独使用它们但也许我错了,这就是我问的原因。有什么想法吗?
【问题讨论】:
标签: django
如果'sth' 不在request.POST 中,request.POST['sth'] 将引发KeyError 异常。
如果'sth' 不在request.POST 中,request.POST.get('sth') 将返回None。
此外,.get 允许您提供默认值的附加参数,如果键不在字典中,则返回该默认值。例如request.POST.get('sth', 'mydefaultvalue')
这是任何 python 字典的行为,并不特定于 request.POST。
第一个 sn-p:
try:
x = request.POST['sth']
except KeyError:
x = None
第二次 sn-p:
x = request.POST.get('sth')
第一个 sn-p:
try:
x = request.POST['sth']
except KeyError:
x = -1
第二次 sn-p:
x = request.POST.get('sth', -1)
第一个 sn-p:
if 'sth' in request.POST:
x = request.POST['sth']
else:
x = -1
第二次 sn-p:
x = request.POST.get('sth', -1)
【讨论】:
Request.POST 示例
req.POST['name_your_desired_field']
如果 'name_your_desired_field' 不在 req.POST 中,这将引发 KeyError 异常。
request.POST.get('name_your_desired_field')
如果 'name_your_desired_field' 不在 req.POST 中,这将返回 None。
虽然,.get 允许您提供默认值的附加参数,如果键不在字典中,则返回该默认值。例如,
req.POST.get('name_your_desired_field', 'your_default_value')
这是任何 python 字典的行为,并不特定于 req.POST
Request.GET 示例
request.GET.get('name_your_desired_field')
如果 'name_your_desired_field' 不在 req.GET 中,这将返回 None。
尽管如此,.get 允许您提供默认值的附加参数,如果键不在字典中,则返回该默认值。例如,
req.GET.get('name_your_desired_field', 'your_default_value')
这是任何 python 字典的行为,并不特定于 req.GET
【讨论】:
普通字典访问和使用 .get() 访问的主要区别在于
有
使用类似的东西
request.POST['sth'] 将出现一个关键错误是如果 ket 'sth' 不存在。
但是使用 get() 方法字典也会为您提供更好的错误处理
request.POST.get('sth')
将返回 none 是键 'sth 不存在' 并且通过将第二个参数提供给 get() 将作为默认值返回。
data = request.POST.get('sth','my_default_value')
如果'sth'键不存在,数据中的值将是my_default_value。
这就是使用 get() 方法优于普通字典访问的优势。
【讨论】: