Python · API · Средний уровень
Корзина
Добавляйте, обновляйте и удаляйте товары в корзине с помощью авторизованных запросов.
Краткое введение в тему и пояснения перед упражнениями (упражнения ниже):
Добавление, обновление и удаление товаров из корзины
#Справочник Cart API
#Упражнения:
Просмотреть корзину
#Авторизуйтесь и отправьте GET к /api/cart/. Выведите количество товаров в корзине и итоговую сумму.
import requests BASE_URL = 'https://apilearn.tukas.dev' # 1. Получите токен # 2. GET /api/cart/ и выведите количество товаров и сумму
Решение
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}'}
cart = requests.get(f'{BASE_URL}/api/cart/', headers=headers).json()
print(len(cart['items']))
print(cart['total_price'])
Добавить продукт в корзину
#Найдите любой продукт из /api/products/ и добавьте его в корзину с количеством 1. Выведите id элемента корзины из ответа.
import requests BASE_URL = 'https://apilearn.tukas.dev' # 1. Авторизуйтесь # 2. Возьмите slug продукта из /api/products/ # 3. POST к /api/cart/items/ и выведите 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}'}
# Взять первый продукт — взять его slug
product_slug = requests.get(f'{BASE_URL}/api/products/').json()['results'][0]['slug']
response = requests.post(
f'{BASE_URL}/api/cart/items/',
json={'product_slug': product_slug, 'quantity': 1},
headers=headers,
)
print(response.json()['id'])
Обновить количество товара
#Добавьте продукт в корзину, затем обновите его количество до 3 через PATCH /api/cart/items/{id}/. Выведите обновлённое количество из ответа.
import requests BASE_URL = 'https://apilearn.tukas.dev' # 1. Авторизуйтесь # 2. Добавьте продукт # 3. PATCH количество до 3
Решение
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']
item = requests.post(
f'{BASE_URL}/api/cart/items/',
json={'product_slug': product_slug, 'quantity': 1},
headers=headers,
).json()
cart_item_id = item['id']
updated = requests.patch(
f'{BASE_URL}/api/cart/items/{cart_item_id}/',
json={'quantity': 3},
headers=headers,
).json()
print(updated['quantity'])
Удалить один товар
#Добавьте продукт в корзину, затем удалите его через DELETE /api/cart/items/{id}/. Проверьте, что корзина пуста, получив её снова и выведя количество товаров.
import requests BASE_URL = 'https://apilearn.tukas.dev' # 1. Авторизуйтесь # 2. Добавьте продукт # 3. Удалите этот товар # 4. Проверьте что корзина пуста
Решение
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']
item = requests.post(
f'{BASE_URL}/api/cart/items/',
json={'product_slug': product_slug, 'quantity': 1},
headers=headers,
).json()
requests.delete(f'{BASE_URL}/api/cart/items/{item["id"]}/', headers=headers)
cart = requests.get(f'{BASE_URL}/api/cart/', headers=headers).json()
print(len(cart['items']))
Добавить два продукта и очистить корзину
#Добавьте два разных продукта в корзину. Выведите итоговую сумму. Затем очистите корзину через DELETE /api/cart/items/ и проверьте, что она пуста.
import requests BASE_URL = 'https://apilearn.tukas.dev' # 1. Авторизуйтесь # 2. Добавьте два разных продукта # 3. Выведите сумму # 4. Очистите корзину # 5. Подтвердите что корзина пуста
Решение
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']
product_slugs = [products[0]['slug'], products[1]['slug']]
for slug in product_slugs:
requests.post(
f'{BASE_URL}/api/cart/items/',
json={'product_slug': slug, 'quantity': 1},
headers=headers,
)
cart = requests.get(f'{BASE_URL}/api/cart/', headers=headers).json()
print('сумма:', cart['total_price'])
requests.delete(f'{BASE_URL}/api/cart/items/', headers=headers)
cart = requests.get(f'{BASE_URL}/api/cart/', headers=headers).json()
print('товаров после очистки:', len(cart['items']))