Метод getlist

Метод getlist применяется к объекту QueryDict и возвращает список всех значений, связанных с указанным ключом. Если ключ отсутствует, метод возвращает пустой список. Особенность метода в том, что он всегда возвращает список, даже если передан единственный параметр. Это полезно при работе с параметрами запроса, которые могут содержать несколько значений (например, выбранные категории или множественные идентификаторы).

Синтаксис

pythonquery_dict.getlist(key, default=None)

Параметры метода:

Пример . Получение списка значений из GET параметров

Допустим, у нас есть URL с несколькими одинаковыми параметрами категорий:

python# 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)

Результат выполнения кода:

python['sport', 'science', 'tech']

Метод вернул список всех значений, переданных в параметре category. Если бы мы использовали метод get, то получили бы только первое значение.

Пример . Использование параметра default

Если ключ отсутствует в QueryDict, метод getlist по умолчанию возвращает пустой список. Параметр default позволяет задать другое значение:

pythonfrom 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)

Результат выполнения кода:

python[]
[]
['default']

Пример . Работа с POST данными формы

Метод getlist часто используется при обработке данных форм с множественным выбором, например, чекбоксов или множественного выбора из списка:

pythonfrom 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)

Результат выполнения кода:

python['sport', 'music', 'reading']

Смотрите также

  • метод get,
    который возвращает одно значение по ключу
  • метод urlencode,
    который преобразует QueryDict в строку запроса
  • класс QueryDict,
    который используется для работы с параметрами запросов
  • атрибут GET,
    который хранит параметры GET запроса