Проект на чистом Django и стандартной библиотеке Python, сделан в качестве тестового задания в 2024.
Проект состоит из двух Django-приложений.
Main - django-app, который реализовывает древовидное меню, соблюдая следующие условия:
- Меню реализовано через
template tag - Все, что над выделенным пунктом - развернуто. Первый уровень вложенности под выделенным пунктом тоже развернут.
- Хранится в БД.
- Редактируется в стандартной админке Django
- Активный пункт меню определяется исходя из URL текущей страницы
- Меню на одной странице может быть несколько. Они определяются по названию.
- При клике на меню происходит переход по заданному в нем URL. URL может быть задан как явным образом, так и через named url.
- На отрисовку каждого меню требуется ровно 1 запрос к БД
Update - django-app, который позволяет вносить в БД меню (одно или несколько) через админку, и нарисовать на любой нужной странице меню по названию.
{% draw_menu 'main_menu' %}
UPD: Проект недоделан, и доделан, скорее всего не будет.
- Python 3
- Django 5
- и их зависимости
Указаны минимально требуемые версии, однако, сервис работает и с актуальными (возникают проблемы с автотестами).
На машине должен быть установлен Python актуальной версии (тестировалось на 3.11)
Клонировать репозиторий на машину, с которой будет будет запускаться сервис (либо по SSH-ссылке, либо скопировать и распаковать zip-архив)
git clone https://github.com/andmerk93/django-uptrader.git
Перейти в директорию с проектом
cd django-uptrader
Развернуть виртуальное окружение python в папке с проектом (django-uptrader)
python -m venv venv
Активировать виртуальное окружение.
Для linux/unix:
source ./venv/bin/activate
Для Windows, должно быть разрешено выполнение скриптов Powershell:
venv\Scripts\activate
Установить Django и заввисимости (тестировалось на Django 5):
pip install Django
Перейти в папку ./uptrader
cd ./uptrader
Дальнейшие команды будут выполняться отсюда
Создать необходимые таблицы в базе данных (нет необходимости делать makemigrations, описания миграций добавлены в репозиторий):
python manage.py migrate
Запустить проект:
py manage.py runserver 80
Тестовый сервер должен запуститься, и быть доступен по http://localhost/ Остановка сервера выполняется по Ctrl+C
Для теста панели администратора нужно создать пользователя с правами администратора и следовать инструкциям в консоли.
py manage.py createsuperuser
Панель администратора будет доступна по http://localhost/admin/