Есть некоторый csv-файл, который выгружается с сайта-партнера. Этот сайт занимается продажей телефонов.
Мы же являемся их региональными представителями, поэтому нам необходимо взять данные из этого файла и отобразить их на нашем сайте на странице каталога, с их предварительным сохранением в базу данных.
Что необходимо сделать:
- В файле
models.py
нашего приложения создаем модель Phone с полямиid
,name
,price
,image
,release_date
,lte_exists
иslug
. Полеid
- должно быть основным ключом модели. - Значение поля
slug
должно устанавливаться слагифицированным значением поляname
. - Написать скрипт для переноса данных из csv-файла в модель
Phone
. Скрипт необходимо разместить в файлеimport_phones.py
в методеhandle(self, *args, **options)
. Подробнее про подобные скрипты (django command) можно почитать здесь и здесь. - При запросе
<имя_сайта>/catalog
- должна открываться страница с отображением всех телефонов. - При запросе
<имя_сайта>/catalog/iphone-x
- должна открываться страница с отображением информации по телефону.iphone-x
- это для примера, данное значние берется изslug
. - В каталоге необходимо добавить возможность менять порядок отображения товаров: по названию (в алфавитном порядке) и по цене (по-убыванию и по-возрастанию).
Шаблоны подготовлены, ваша задача ознакомиться с ними и корректно написать логику.
Для переноса данных из файла в модель можно выбрать один из способов:
- воспользоваться стандартной библиотекой языка python :
csv
(рекомендуется). - построчно пройтись по файлу и для каждой строки сделать соответствующую запись в БД.
Для реализации сортировки можно - брать параметр sort
из request.GET
.
Пример запросов:
<имя_сайта>/catalog?sort=name
- сортировка по названию.<имя_сайта>/catalog?sort=min_price
- сначала отображать дешевые.
Для запуска проекта необходимо:
Установить зависимости:
pip install -r requirements.txt
Выполнить следующие команды:
- Команда для создания миграций приложения для базы данных
python manage.py migrate
- Команда для загрузки данных из csv в БД
python manage.py import_phones
- Команда для запуска приложения
python manage.py runserver
- При создании моделей или их изменении необходимо выполнить следующие команды:
python manage.py makemigrations
python manage.py migrate