Есть некоторый 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