Есть некоторый 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)
- При запросе
<имя_сайта>/catalog
- должна открываться страница с отображением всех телефонов. - При запросе
<имя_сайта>/catalog/iphone-x
- должна открываться страница с отображением информации по телефону. - В каталоге необходимо добавить возможность менять порядок отображения товаров: по названию (в алфавитном порядке) и по цене (по-убыванию и по-возрастанию).
Для переноса данных из файла в модель можно выбрать один из способов:
- воспользоваться стандартной библиотекой языка 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