2015-06-08 5 views
0

Я следую учебнику here. Я пришел через это:Django REST API 'get' function

def update(self, instance, validated_data): 
     instance.title = validated_data.get('title', instance.title) 
     instance.code = validated_data.get('code', instance.code) 
     instance.linenos = validated_data.get('linenos', instance.linenos) 
     instance.language = validated_data.get('language', instance.language) 
     instance.style = validated_data.get('style', instance.style) 
     instance.save() 
     return instance 

Это, вероятно, очень простой вопрос, но что get функция здесь? У меня возникли проблемы с поиском какой-либо документации о том, что это такое. Я понимаю, что есть функция запроса get, но являются ли эти же функции?

+1

get - это метод словаря – Pynchia

ответ

4

validated_data - это OrderedDict и OrderedDict.get(key, default) - метод, который извлекает value для данного ключа, возвращая default, если ключ отсутствует в dict.

Другими словами: instance.title = validated_data.get('title', instance.title) будет пытаться извлечь из title validated_data но возвращает текущий instance.title если ключ title нет в проверенных данных.

https://docs.python.org/2/library/collections.html#collections.OrderedDict https://docs.python.org/2/library/stdtypes.html#dict.get

1

get - словарь метод. Вы передаете ему ключ, и он возвращает значение, связанное с ключом. При желании вы также можете передать ему значение, которое вы хотите вернуть, если ключ отсутствует в словаре. Нет необходимости указывать значение по умолчанию (он возвращает None, если ключ отсутствует), но он делает все более четким, даже если вы хотите None.

Например:

d={'ciao':1, 'how':2, 'are':3, 'you':4} 
my_val = d.get('how', 10) 
print 'my_val =', my_val 

выходы

my_val = 2 

тогда как

my_val = d.get('absent', 10) 
print 'my_val =', my_val 

выходы

my_val = 10 
2

прибудет не имеет ничего общего с API REST.

validated_data - это словарь. Вы можете извлечь значение из словаря следующими способами.

d = some_dictionary 

**Method 1:** a = d[key] 
**Method 2:** a = d.get(key,custom_value) 

В Метод 1, A присваивается значение, если ключ присутствует в словаре г. Если ключа нет, KeyError поднят.

В Method 2 присвоено значение d [key], если в словаре имеется ключ, которому присвоен custom_value. По умолчанию custom_value - None. Таким образом, исключение не будет повышаться даже в словаре не содержит ключа, который вы ищете.

Короче говоря, Метод 2 - безопасный способ доступа к ключам словаря.

Смежные вопросы