Небольшое Django-приложение birthdays показывает ближайший день рождения сотрудника и транслирует обновления по WebSocket (Django Channels). В составе проектной конфигурации присутствуют PostgreSQL, Redis, Nginx и Docker Compose.
- Django 4.2
- Channels 4 + Daphne
- PostgreSQL, Redis
- Nginx
- Docker / Docker Compose
- Создать и активировать виртуальное окружение.
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt- Поднять Redis локально (например, через Docker):
docker run --rm -p 6379:6379 redis:7-alpine- Настроить переменные окружения (необязательно). Можно создать файл
.envв корне:
SECRET_KEY=django-insecure-default-key
DEBUG=1
ALLOWED_HOSTS=localhost,127.0.0.1
POSTGRES_DB=django_db
POSTGRES_USER=django_user
POSTGRES_PASSWORD=password
DB_HOST=localhost
DB_PORT=5432
REDIS_HOST=127.0.0.1
REDIS_PORT=6379- Выполнить миграции и собрать статику:
cd proj
python manage.py migrate
python manage.py collectstatic --noinput- Запустить дев-сервер:
python manage.py runserver- Открыть приложение:
http://127.0.0.1:8000/
- Создать файл
.envв корне (минимально):
SECRET_KEY=django-insecure-default-key
DEBUG=1
ALLOWED_HOSTS=localhost,127.0.0.1
POSTGRES_DB=django_db
POSTGRES_USER=django_user
POSTGRES_PASSWORD=password
DB_HOST=db
DB_PORT=5432
REDIS_HOST=redis
REDIS_PORT=6379- Собрать и запустить:
docker compose up --build- Открыть:
http://localhost/
- Создать суперпользователя:
cd proj
python manage.py createsuperuser- Применить миграции:
python manage.py migrate- Собрать статику:
python manage.py collectstatic --noinputproj/birthdays/— приложение (модели, вьюхи, утилиты, WebSocket-консумер)proj/proj/settings.py— конфигурация Django/Channelsdocker-compose.yaml,Dockerfile,nginx.conf— инфраструктураrequirements.txt— зависимостиstaticfiles/,media/— статика и медиа (игнорируются в гите)
- По умолчанию проект настроен на PostgreSQL; для локального теста можно переключиться на SQLite, изменив
DATABASESвproj/proj/settings.py. - Для корректной работы WebSocket используется Redis (настройки
CHANNEL_LAYERS).