Метод getlist
Метод getlist применяется к объекту QueryDict и возвращает
список всех значений, связанных с указанным ключом.
Если ключ отсутствует, метод возвращает пустой список.
Особенность метода в том, что он всегда возвращает список,
даже если передан единственный параметр. Это полезно при
работе с параметрами запроса, которые могут содержать
несколько значений (например, выбранные категории
или множественные идентификаторы).
Синтаксис
query_dict.getlist(key, default=None)
Параметры метода:
-
key- строковый ключ, по которому нужно получить значения; -
default- значение, возвращаемое в случае отсутствия ключа в QueryDict.
Пример . Получение списка значений из GET параметров
Допустим, у нас есть URL с несколькими одинаковыми параметрами категорий:
# URL: /articles/?category=sport&category=science&category=tech
from django.http import QueryDict
query_string = "category=sport&category=science&category=tech"
res = QueryDict(query_string)
categories = res.getlist("category")
print(categories)
Результат выполнения кода:
['sport', 'science', 'tech']
Метод вернул список всех значений, переданных
в параметре category. Если бы мы использовали
метод get, то получили бы только первое значение.
Пример . Использование параметра default
Если ключ отсутствует в QueryDict, метод
getlist по умолчанию возвращает пустой список.
Параметр default позволяет задать
другое значение:
from django.http import QueryDict
query_string = "page=2&limit=10"
res = QueryDict(query_string)
# Ключ 'tag' отсутствует
tags = res.getlist("tag")
print(tags)
# С указанием значения по умолчанию
tags_with_default = res.getlist("tag", default=[])
print(tags_with_default)
# С другим значением по умолчанию
tags_custom = res.getlist("tag", default=["default"])
print(tags_custom)
Результат выполнения кода:
[]
[]
['default']
Пример . Работа с POST данными формы
Метод getlist часто используется при обработке
данных форм с множественным выбором,
например, чекбоксов или множественного выбора
из списка:
from django.http import QueryDict
# POST данные формы с множественным выбором
post_data = "interests=sport&interests=music&interests=reading&csrfmiddlewaretoken=abc123"
res = QueryDict(post_data)
interests = res.getlist("interests")
print(interests)
Результат выполнения кода:
['sport', 'music', 'reading']