В чем разница между
request.POST.get('sth')
и
request.POST['sth']
Не нашел подобный вопрос, оба работают одинаково для меня, предположим, что я могу использовать их отдельно, но, возможно, я ошибаюсь, поэтому я спрашиваю. Любые идеи?
В чем разница между
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']
возникает ключевая ошибка, если ket 'sth' не существует.
Но использование словарей метода get() также обеспечит лучшую обработку ошибок
request.POST.get('sth')
вернет none, ключ "sth не существует" а также путем предоставления второго параметра get() возвратит с ним значение по умолчанию.
data = request.POST.get('sth','my_default_value')
Если ключ `sth 'не существует, значение в данных будет my_default_value
.
Это преимущество использования метода get() над нормальными словарями.