Метод get
Метод get применяется к объекту QueryDict и возвращает
значение параметра по указанному ключу. Если параметр отсутствует,
возвращается значение по умолчанию, которое можно задать вторым
аргументом. Этот метод полезен при работе с GET и POST параметрами
в Django, когда нужно безопасно извлечь данные из запроса.
Синтаксис
query_dict.get(key, default=None)
Параметры
Метод принимает два параметра:
key - обязательный параметр, строка, представляющая имя
параметра, значение которого нужно получить.
default - необязательный параметр, значение по умолчанию,
которое возвращается, если ключ отсутствует. По умолчанию равен
None.
Пример . Получение параметра из GET запроса
Давайте получим значение параметра 'category' из GET запроса:
from django.http import QueryDict
# Создаем QueryDict с GET параметрами
get_data = QueryDict('category=books&page=2&sort=asc')
# Получаем значение параметра category
category = get_data.get('category')
print(category)
Результат выполнения кода:
"books"
Пример . С значением по умолчанию
Давайте попробуем получить несуществующий параметр с указанием значения по умолчанию:
from django.http import QueryDict
# Создаем QueryDict с GET параметрами
get_data = QueryDict('category=books&page=2')
# Получаем значение несуществующего параметра
status = get_data.get('status', 'active')
print(status)
# Получаем значение несуществующего параметра без default
author = get_data.get('author')
print(author)
Результат выполнения кода:
"active"
None
Пример . Работа с POST параметрами
Давайте извлечем данные из POST запроса с использованием метода get:
from django.http import QueryDict
# Создаем QueryDict с POST параметрами
post_data = QueryDict('username=admin&email=admin@example.com&age=25')
# Извлекаем параметры с проверкой на существование
username = post_data.get('username')
email = post_data.get('email', 'no-email@example.com')
phone = post_data.get('phone', 'not specified')
print(f'Username: {username}')
print(f'Email: {email}')
print(f'Phone: {phone}')
Результат выполнения кода:
"Username: admin"
"Email: admin@example.com"
"Phone: not specified"
Пример . Использование в Django представлении
Рассмотрим, как метод get используется в реальном
представлении Django для обработки параметров запроса:
from django.shortcuts import render
from myapp.models import Article
def article_list(request):
# Получаем параметры фильтрации из GET запроса
category = request.GET.get('category', 'all')
status = request.GET.get('status', 'published')
limit = int(request.GET.get('limit', 10))
# Формируем запрос на основе полученных параметров
articles = Article.objects.all()
if category != 'all':
articles = articles.filter(category=category)
if status != 'all':
articles = articles.filter(status=status)
articles = articles[:limit]
return render(request, 'articles/list.html', {
'articles': articles,
'category': category,
'status': status,
'limit': limit
})