Skip to content

MegaDoge1337/otus_django_tutorial

Repository files navigation

Веб-приложение для проведения опросов

Веб-приложение на базе Django (версии 5.3.1), разработанное по туториалу с официального сайта фреймворка (Writing your first Django app).

Системные требования

  • Python версии 3.12 или выше (исключая версию 3.12.5, на ней не работает black)
  • Poetry версии 1.8.3 или выше

Установка

  1. Склонируйте репозиторий:
git clone https://github.com/MegaDoge1337/otus_django_tutorial.git
  1. Перейдите в директорию с проектом:
cd otus_django_tutorial
  1. Установите зависимости:
poery install

Развертывание

Приложение с дополнительными сервисами (СУБД, прокси-сервер) развертывается в Docker. Для простоты управления набором сервисов репозиторий содержит базовые docker-compose.yml файлы. Используя их в качестве примера ниже описан процесс настройки.

Запуск разработочного инстанса

Для разработочного инстанста используются следующие файлы

  • .env.dev - файл с переменными среды;
  • docker-compose.dev.yml - файл с настройками контейнера СУБД и приложения;
  • postgres_init_dev.sql - запросы из данного файла выполняются при первом запуске контейнера, по умолчанию используется для создания базы данных.

Чтобы заполнить файл .env.dev, см. раздел Переменные среды.

Важно учитывать особенность докера при разрешении имен контейнеров, поэтому для переменной DB_HOST следует использовать имя сервиса из compose-файла.

Выполните следующие шаги:

  • Создайте файл .env.dev и заполните его;
  • Заполните имя базы данных в postgres_init_dev.sql;
  • Создайте директории /docker/postgres_dev, туда будут примонтированы данные контейнера СУБД.

Запустите сборку образа с приложением:

docker-compose -f docker-compose.dev.yml build .

Запустите контейнеры:

docker-compose -f docker-compose.dev.yml up -d

После успешного старта контейнеров запустите миграции:

docker-compose exec web python manage.py migrations

Создайте суперпользователя:

docker-compose exec web python manage.py createsuperuser

Запуск продуктивного инстанса

Для продуктивного инстанста используются следующие файлы

  • .env.prod - файл с переменными среды;
  • docker-compose.yml - файл с настройками контейнера СУБД и приложения;
  • postgres_init_prod.sql - запросы из данного файла выполняются при первом запуске контейнера, по умолчанию используется для создания базы данных;
  • nginx.conf - файл конфигураций для обратного прокси-сервера.

Чтобы заполнить файл .env.prod, см. раздел Переменные среды.

Важно учитывать особенность докера при разрешении имен контейнеров, поэтому для переменной DB_HOST следует использовать имя сервиса из compose-файла.

Выполните следующие шаги:

  • Создайте файл .env.prod и заполните его, укажите параметр DJANGO_STATIC_ROOT как ../staticfiles;
  • Заполните имя базы данных в postgres_init_prod.sql;
  • Создайте директории /docker/postgres_prod, туда будут примонтированы данные контейнера СУБД.

Запустите сборку образа с приложением:

docker-compose build .

Запустите контейнеры:

docker-compose up -d

После успешного старта контейнеров запустите миграции:

docker-compose exec web python manage.py migrations

Выполните сборку статических файлов:

docker-compose exec web python manage.py collectstatic

Создайте суперпользователя:

docker-compose exec web python manage.py createsuperuser

Переменные среды

Примером служит файл .env.example:

DJANGO_DEBUG - режим отладки (True/False)
DJANGO_SECRET - секретный ключ проекта Django
DJANGO_TZ - часовой пояс
DJANGO_DB_ENGINE - движок СУБД (по умолчанию использовать `django.db.backends.postgresql`)
DJANGO_ALLOWED_HOSTS - список адресов, которые прослушивает приложение (разделителем служит запятая: `127.0.0.1,localhost`)
DJANGO_STATIC_ROOT - ссылка на корневую директорию для статических файлов

DB_HOST - адрес СУБД
DB_PORT - порт СУБД
DB_NAME - имя базы данных
DB_USER - пользователь СУБД
DB_PASSWORD - пароль пользователя СУБД

Проверка форматирования

Для запуска инструментов форматирования используйте Makefile

  • Запуск линтера
make lint
  • Запуск форматирования
make format
  • Сортировка импортов
make import-sort

Тестирование

Запустить набор тестов можно, развернув разработочный или продуктивнй инстанс, при помощи следующей команды:

docker-compose exec web python manage.py test polls

About

Django Polls App

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published