Python · API · Середній рівень
Замовлення
Оформлюйте замовлення з кошика та переглядайте історію своїх замовлень.
Короткий вступ до теми та пояснення перед вправами (вправи нижче):
Оформлення та перегляд замовлень
#Довідник ендпоінтів замовлень
#Вправи:
Оформити замовлення
#Додайте хоча б один продукт до кошика, потім зробіть POST до /api/orders/, щоб оформити замовлення. Виведіть id замовлення і статус із відповіді.
import requests BASE_URL = 'https://apilearn.tukas.dev' # 1. Авторизуйтеся # 2. Додайте продукт до кошика # 3. POST /api/orders/ і виведіть id замовлення + статус
Рішення
import requests
BASE_URL = 'https://apilearn.tukas.dev'
token = requests.post(f'{BASE_URL}/api/auth/token/', json={
'username': 'ВАШ_ЛОГІН', 'password': 'ВАШ_ПАРОЛЬ',
}).json()['token']
headers = {'Authorization': f'Token {token}'}
product_slug = requests.get(f'{BASE_URL}/api/products/').json()['results'][0]['slug']
requests.post(
f'{BASE_URL}/api/cart/items/',
json={'product_slug': product_slug, 'quantity': 1},
headers=headers,
)
order = requests.post(
f'{BASE_URL}/api/orders/',
json={'phone_number': '+1234567890'},
headers=headers,
).json()
print(order['id'])
print(order['status'])
Список замовлень
#Отримайте історію замовлень із GET /api/orders/. Виведіть кількість замовлень і id та статус кожного.
import requests BASE_URL = 'https://apilearn.tukas.dev' # GET /api/orders/ і виведіть кількість + кожне замовлення
Рішення
import requests
BASE_URL = 'https://apilearn.tukas.dev'
token = requests.post(f'{BASE_URL}/api/auth/token/', json={
'username': 'ВАШ_ЛОГІН', 'password': 'ВАШ_ПАРОЛЬ',
}).json()['token']
headers = {'Authorization': f'Token {token}'}
data = requests.get(f'{BASE_URL}/api/orders/', headers=headers).json()
print(f'{data["count"]} замовлень')
for order in data['results']:
print(f" #{order['id']} — {order['status']}")
Деталі замовлення
#Оформте замовлення, потім отримайте його деталі з GET /api/orders/{id}/. Виведіть назву, кількість і ціну кожного товару.
import requests
BASE_URL = 'https://apilearn.tukas.dev'
# 1. Авторизуйтеся, додайте товари, оформте замовлення
# 2. GET /api/orders/{id}/ і виведіть кожен товар
Рішення
import requests
BASE_URL = 'https://apilearn.tukas.dev'
token = requests.post(f'{BASE_URL}/api/auth/token/', json={
'username': 'ВАШ_ЛОГІН', 'password': 'ВАШ_ПАРОЛЬ',
}).json()['token']
headers = {'Authorization': f'Token {token}'}
products = requests.get(f'{BASE_URL}/api/products/').json()['results']
for p in products[:2]:
requests.post(
f'{BASE_URL}/api/cart/items/',
json={'product_slug': p['slug'], 'quantity': 1},
headers=headers,
)
order = requests.post(
f'{BASE_URL}/api/orders/',
json={'phone_number': '+1234567890'},
headers=headers,
).json()
order_id = order['id']
detail = requests.get(f'{BASE_URL}/api/orders/{order_id}/', headers=headers).json()
for item in detail['items']:
print(item['name'], item['quantity'], item['price'])
Повний процес замовлення
#Виконайте повний процес в одному скрипті: авторизуйтеся, додайте 3 продукти до кошика, оформте замовлення, підтвердіть що воно є в списку замовлень, і виведіть id замовлення та кількість товарів.
import requests BASE_URL = 'https://apilearn.tukas.dev' # Повний процес: авторизація → додавання 3 товарів → замовлення → підтвердження в списку
Рішення
import requests
BASE_URL = 'https://apilearn.tukas.dev'
token = requests.post(f'{BASE_URL}/api/auth/token/', json={
'username': 'ВАШ_ЛОГІН', 'password': 'ВАШ_ПАРОЛЬ',
}).json()['token']
session = requests.Session()
session.headers['Authorization'] = f'Token {token}'
products = session.get(f'{BASE_URL}/api/products/').json()['results'][:3]
for p in products:
session.post(f'{BASE_URL}/api/cart/items/', json={'product_slug': p['slug'], 'quantity': 1})
order = session.post(f'{BASE_URL}/api/orders/', json={'phone_number': '+1234567890'}).json()
order_id = order['id']
orders_list = session.get(f'{BASE_URL}/api/orders/').json()
order_ids = [o['id'] for o in orders_list['results']]
print(f'Замовлення {order_id} у списку: {order_id in order_ids}')
print(f'Товарів: {len(order["items"])}')
Обчислити загальну суму витрат
#Оформте два окремих замовлення (додайте товари, оформте, додайте ще, оформте знову). Потім отримайте всі замовлення та обчисліть загальну суму витрат по всіх замовленнях. Виведіть суму.
import requests BASE_URL = 'https://apilearn.tukas.dev' # Оформте 2 замовлення, потім підсумуйте всі витрати
Рішення
import requests
BASE_URL = 'https://apilearn.tukas.dev'
token = requests.post(f'{BASE_URL}/api/auth/token/', json={
'username': 'ВАШ_ЛОГІН', 'password': 'ВАШ_ПАРОЛЬ',
}).json()['token']
session = requests.Session()
session.headers['Authorization'] = f'Token {token}'
products = session.get(f'{BASE_URL}/api/products/').json()['results']
# Перше замовлення
session.post(f'{BASE_URL}/api/cart/items/', json={'product_slug': products[0]['slug'], 'quantity': 1})
session.post(f'{BASE_URL}/api/orders/', json={'phone_number': '+1234567890'})
# Друге замовлення
session.post(f'{BASE_URL}/api/cart/items/', json={'product_slug': products[1]['slug'], 'quantity': 2})
session.post(f'{BASE_URL}/api/orders/', json={'phone_number': '+1234567890'})
orders = session.get(f'{BASE_URL}/api/orders/').json()['results']
total_spend = sum(
float(item['price']) * item['quantity']
for o in orders
for item in o['items']
)
print(f'Загальна сума: {total_spend:.2f}')