- Python 3.8
- Django 4.2.14-
- django-autocomplete-light 3.11.0
- pytest 8.2.2
- pytest-django 4.8.0
- requests 2.32.3
- black 24.4.2
- Sqlite
- Openstreetmap - нужен для конвергатиции lat и lon в город
- Openapi - условно бесплатный api погоды, из которого можно брать самые разнообразные данные, но я использовал простой минимум
- Форма указания ввода города
- статистика погоды по указанному городу
- Кеширование запроса
- Указание последнего просмотренного прогноза погоды(есть не доработка по кодировка)
- Покрытие тестами на Pytest
- Docker и Docker compose файлы
- Список запрошенных пользователем прогнозов погоды/городов
- Автодополнение(начал реализацию через пакет auto-complete но не было возможности доделать - выдовал какие-то странные ошибки)
- weather - основа проекта:
- urls - основные маршруты(3
- tests - папка с тестами функциональности(знаю - да сделал не "круто" смешал юнит и интеграционные в один файл)
- weather_o_complex - ядро проекта:настройки, главная точка входа и подобная настройка приложения, работает синхронно, с "домашней" БД Sqlite
- Без докера:
-
git clone https://github.com/atomsis/weather_o_complex
-
pip install -r requirements.txt
-
P.s если вы будете делать на базе windows систем то установка зависимостей через pip install даст ошибку(так как он не сможет установить зависимость ubuntu wheels на windows - решение либо установить вручную все пакеты либо убрать пакет из зависимостей, если делаете НЕ через компоуз на виндоус(через компоуз всё ок).
- С docker:
- Запустить/скачать и запустить приложение docker
- Ввести в интерпретаторе:
docker compose up --build
- Перейдите по ссылке http://localhost:8000/
- Введите город(можно по русски а можно и по английски)(главное существующий - можно конечно и нет-тогда увидите обработанную ошибку) - и увидете прогноз погоды по этому городу на сегодня.
Примечание: не знаю как так работает в openstreetmap - но если введёт условное "123" - то он найдёт такое место -так что это не мой косяк- официльный сайт считает что такое место есть и даст вам даже координаты)
- Запросы кешируются в куках с именем "last_city" на срок = 30 * 24 * 60 * 60(месяц)
- Вернитесь назад к полю ввода городов = у вас появился последний "искаемый" город
- Перейдите по ссылке http://localhost:8000/city_statistics/ - это api, который показывет "искаемые"(xex) пользователем города(существующие) и количество "раз" поиска этого города. Это JSON данные.(надеюсь я правильно понял задачу - и имелось ввиду такой возврат данных)
- Установить pytest если ещё этого не сделали:
pip intall pytest