export DOCKER_DEFAULT_PLATFORM=linux/amd64
Команда для разворота проекта:
docker-compose up --build -d
или просто
docker-compose up --build
чтобы видеть логи
Главная страница будет доступна по адресу: localhost
Административная панель: localhost/admin/
Админ логин: admin
Админ пароль: admin
Если возникли проблемы с nginx и 80 портом, например, на Ubuntu, необходимо сделать следующее:
- Останавливаем все контейнеры
docker-compose down
- Удаляем все контейнеры
docker rm -fv $(docker ps -aq)
- Смотрим какие сервисы используют 80 порт
sudo lsof -i -P -n | grep 80
- Удаляем мешающий сервис
sudo kill <process id>
- Заново запускам наши контейнеры
docker-compose up --build
Переместитесь в дерикторию с manage.py
- Установим зависимости
1.1 Если у вас Unix система:
pip install ../requirements/requirements-unix.txt
- Установим зависимости
1.2 Если у вас Windows система:
pip install ../requirements/requirements-win.txt
- Создадим миграции (на всякий случай, они уже должны быть)
python manage.py makemigrations
- Выполним миграции
python manage.py migrate
- Соберём статические файлы
python manage.py collectstatic --noinput
- Создадим супер юзера (воспользуемся кастомной командой)
(--force нужен, чтобы создать супер юзера даже если 1 или несколько уже созданы)
python manage.py initadmin --user=admin --password=password --force=True
- Запускаем проект
python manage.py runserver
Основной язык программирования: Python 3.10.4
Framework: Django 4.1.2
Язык на Frontend'е: JavaScript
С использоваинем: jquery в качестве AJAX framework'а для асинхронных запросов к бэку
Web Framework: Bootstrap
База данных: PostgreSQL 14
Структура проекта классическая, за исключением того, что я добавил модуль services.py для логики, которую хочется вынести из views.py, но не хочется добавлять в models.py, чтобы не "раздувать" модели и не было проблем с кольцевым импортом.
При открытии URL рендерится только структура подразделений, их конечно может быть много, но не миллионы, да и тысячи вряд ли, так что это должно работать быстроЕсли в подразделении есть сотрудники, то при открытии подразделения высвечивается кнопка "Показать сотрудников", при нажатии на которую, отправляется AJAX запрос с id подразделения на бэк с помощью jquery, ответ собирается в html и вставляется на страницу(выводится список сотрудников). Запрос отправляется только в том случае, если это первое нажатие на кнопку, далее сворачивается и разворачивается уже отрендеренный html
В админке добавлены разные фильтры, поля поиска. Можно выбрать тему
Ограничения для админки имплементировал на уровне модели, чтобы точно нельзя было записать в базу ошибочные данные