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} продуктів')