Чем отличается `request.data ['param-name']` от `request.data.get ('param-name')` в Django

Я пытался получить данные из API

1 request.data['param-name']

вывод -: '9121009000'

2 request.data.get('param-name')

вывод -: '9121009000'

Оба дают одинаковый результат.

Итак, какой из них лучше всего использовать, чтобы получить данные и почему.

заранее спасибо

Возможный дубликат Почему dict.get (ключ) вместо dict [key]?

khelwood 30.05.2018 12:48
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
1
281
2

Ответы 2

Если вы выполните вызов request.data['key'], за кулисами Python вызовет функцию __getitem__ для request.data. Мы можем прочитать документация и увидеть:

QueryDict.__getitem__(key)

Returns the value for the given key. If the key has more than one value, it returns the last value. Raises django.utils.datastructures.MultiValueDictKeyError if the key does not exist. (This is a subclass of Python's standard KeyError, so you can stick to catching KeyError.)

Тогда как если вы выполните функцию request.data.get('key'), it will call the.get (..) `, и мы увидим в документация:

QueryDict.get(key, default=None)

Uses the same logic as __getitem__(), with a hook for returning a default value if the key doesn't exist.

Это означает, что если ключ не существует, .get(..) вернет None, если вы указали нет по умолчанию, или он вернет заданное значение по умолчанию, если вы запросите с request.data.get('key', somedefault).

Обычно последний используется в том случае, если значение является необязательным, и вы хотите уменьшить объем кода, чтобы проверить, существует ли ключ.

Да, оба они дадут вам одинаковые результаты, но их отличает способ получения данных для данного ключа. Для этого вам нужно понять, как работают словари в Python, давайте определим dict:

>>> kwarg = {'name': 'John'}
>>> kwarg['name']
'John'
>>> kwarg['age']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'age'
>>>
>>> kwarg.get('age', 25)
25

В приведенном выше примере в первом методе должен присутствовать ключ, тогда как во втором случае я могу определить значение по умолчанию, если ключ не найден.

Другие вопросы по теме