В чем разница между
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 = None
Второй фрагмент:
x = request.POST.get('sth')
Первый фрагмент:
try:
x = request.POST['sth']
except KeyError:
x = -1
Второй фрагмент:
x = request.POST.get('sth', -1)
Первый фрагмент:
if 'sth' in request.POST:
x = request.POST['sth']
else:
x = -1
Второй фрагмент:
x = request.POST.get('sth', -1)
Основное различие между обычным доступом к словарям и доступом к ним с помощью .get () заключается в том, что
При использовании чего-то подобного
request.POST['sth']
возникнет ключевая ошибка, если кет 'sth' не существует. Но использование словарей метода get () также улучшит обработку ошибок.request.POST.get('sth')
не вернет none, это ключ «sth не существует», а также, указав второй параметр, get () вернет его как значение по умолчанию.
data = request.POST.get('sth','my_default_value')
если ключ 'sth' не существует, будет значение в данных
my_default_value
. В этом преимущество использования метода get () перед обычным доступом к словарям.источник