【django学习】request.POST与request.POST.get两者主要区别

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

你可能感兴趣的:(Django框架)