Python · API · Начальный уровень
Работа с категориями
Получите и изучите категории продуктов, затем используйте их для фильтрации списка товаров.
Краткое введение в тему и пояснения перед упражнениями (упражнения ниже):
Практические паттерны с категориями
#Справочник эндпоинтов категорий
#Упражнения:
Список всех категорий
#Получите список категорий и выведите название каждой категории, по одной на строку.
import requests BASE_URL = 'https://apilearn.tukas.dev' # Получите все категории и выведите каждое название
Решение
import requests
BASE_URL = 'https://apilearn.tukas.dev'
response = requests.get(f'{BASE_URL}/api/categories/')
for cat in response.json()['results']:
print(cat['name'])
Словарь slug → название
#Получите все категории и постройте dict, который отображает каждый slug на его название для отображения. Выведите этот dict.
import requests
BASE_URL = 'https://apilearn.tukas.dev'
# Постройте dict {slug: name} и выведите его
Решение
import requests
BASE_URL = 'https://apilearn.tukas.dev'
response = requests.get(f'{BASE_URL}/api/categories/')
categories = response.json()['results']
slug_to_name = {cat['slug']: cat['name'] for cat in categories}
print(slug_to_name)
Получить одну категорию
#Получите категорию "outdoor" по её slug и выведите её id, name и slug.
import requests BASE_URL = 'https://apilearn.tukas.dev' # Получите категорию outdoor и выведите id, name, slug
Решение
import requests
BASE_URL = 'https://apilearn.tukas.dev'
response = requests.get(f'{BASE_URL}/api/categories/outdoor/')
cat = response.json()
print(cat['id'])
print(cat['name'])
print(cat['slug'])
Количество продуктов по категориям
#Для каждой категории выведите её название и общее количество продуктов. Формат каждой строки: "Название категории: N продуктов".
import requests BASE_URL = 'https://apilearn.tukas.dev' # Для каждой категории получите количество продуктов и выведите
Решение
import requests
BASE_URL = 'https://apilearn.tukas.dev'
categories = requests.get(f'{BASE_URL}/api/categories/').json()['results']
for cat in categories:
count = requests.get(
f'{BASE_URL}/api/products/',
params={'category': cat['slug'], 'page_size': 1},
).json()['count']
print(f"{cat['name']}: {count} продуктов")
Найти наибольшую категорию
#Найдите категорию с наибольшим количеством продуктов и выведите её название и количество.
import requests BASE_URL = 'https://apilearn.tukas.dev' # Найдите категорию с наибольшим количеством продуктов
Решение
import requests
BASE_URL = 'https://apilearn.tukas.dev'
categories = requests.get(f'{BASE_URL}/api/categories/').json()['results']
counts = []
for cat in categories:
count = requests.get(
f'{BASE_URL}/api/products/',
params={'category': cat['slug'], 'page_size': 1},
).json()['count']
counts.append((count, cat['name']))
best_count, best_name = max(counts)
print(f'{best_name}: {best_count} продуктов')