📝 Задания — Урок 31
⚡ Задания кратко
6 заданий по Extract* функциям и query_params. Ответы — в Решениях.
Блок 1: Функции Extract*
Сопоставьте функции извлечения компонентов даты/времени с их описанием:
ExtractMonthExtractDayExtractHourExtractQuarter
A. Извлекает день из даты
B. Извлекает час из времени
C. Извлекает квартал из даты
D. Извлекает месяц из даты
Какой из вариантов правильно фильтрует книги, опубликованные в январе, без явного импорта функций Extract*?
Book.objects.filter(published_date__month=1)Book.objects.filter(published_date=1)Book.objects.annotate(m=ExtractMonth('published_date'))Book.objects.get(month=1)
Из какого модуля нужно импортировать функции ExtractYear, ExtractMonth и другие?
django.db.modelsdjango.db.models.functionsdjango.utils.datesrest_framework.filters
Блок 2: Query Parameters с APIView
Какие параметры используются для пагинации данных в примере из лекции?
pagelimitpage_sizeoffset
(Можно выбрать несколько)
Как называется класс, который можно использовать для добавления пагинации к APIView?
Как получить доступ к query parameters в APIView?
request.GET.get('key')request.params.get('key')request.query_params.get('key')request.data.get('key')
Блок 3: Практические задачи
Напишите APIView, который принимает параметр year и возвращает все книги, опубликованные в этом году. Если параметр не передан — возвращает все книги.
Модель: Book(title, author, published_date). Используйте прямые lookups.
Исправьте ошибку в коде:
class BookListView(APIView):
def get(self, request):
author = request.query_params.get('author')
year = request.query_params.get('year')
filters = {
'author': author,
'published_date__year': year
}
books = Book.objects.filter(**filters)
return Response(BookSerializer(books, many=True).data)
Что не так и как исправить?