DjangoDefault

Django Default

banner

Opinionated стартовый шаблон Django 5.2 с соврСмСнным стСком: DRF + SimpleJWT, Unfold admin, многоязычиС ( modeltranslation), CKEditor 5, Redis cache, Celery, Swagger / Redoc (drf-spectacular), PostgreSQL, Docker, Taskfile, ruff, mypy, pytest.

English summary: Ready-to-use Django 5.2 boilerplate with REST, JWT auth, multilingual setup, async tasks, rich admin & tooling.

ВрСбования

Π“ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ стСк / инструмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² микросСрвисном backend ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ:


Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

  1. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»
  2. АрхитСктура ΠΈ структура ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ²
  3. Π‘Ρ‚Π΅ΠΊ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ
  4. Быстрый старт (локально / Docker)
  5. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния
  6. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостями (uv)
  7. Management-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
  8. API докумСнтация (drf-spectacular)
  9. АутСнтификация (SimpleJWT)
  10. ΠœΠ½ΠΎΠ³ΠΎΡΠ·Ρ‹Ρ‡Π½ΠΎΡΡ‚ΡŒ (i18n & modeltranslation)
  11. Админ-панСль (Unfold)
  12. Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ (django-ckeditor-5)
  13. КСш и Redis
  14. Ѐоновая ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π·Π°Π΄Π°Ρ‡ (Celery + Flower, RabbitMQ / Redis)
  15. ΠšΠ°Ρ‡Π΅ΡΡ‚Π²ΠΎ ΠΊΠΎΠ΄Π° (ruff, mypy, deptry, pre-commit)
  16. ВСстированиС (pytest + Taskfile)
  17. Π›ΠΎΠ³ΠΈ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³
  18. Docker / ΠŸΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ
  19. ОбновлСниС / Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅
  20. Donate & ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹
  21. Sentry & Prometheus (Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅)

1. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»


2. АрхитСктура / Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°

src/
  core/                # Django settings, celery init, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ (jwt, cache, swagger ...)
  apps/
    shared/            # ΠžΠ±Ρ‰ΠΈΠ΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹/Π±Π°Π·ΠΎΠ²Ρ‹Π΅ классы
    users/             # ΠšΠ°ΡΡ‚ΠΎΠΌΠ½Π°Ρ модСль ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ связанная Π»ΠΎΠ³ΠΈΠΊΠ°
assets/
  static/              # Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ статичСскиС Ρ„Π°ΠΉΠ»Ρ‹
  staticfiles/         # Π‘ΠΎΠ±Ρ€Π°Π½Π½Ρ‹Π΅ статики (collectstatic)
  locale/              # Π€Π°ΠΉΠ»Ρ‹ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠ² (.po/.mo)
deployments/compose/   # Dockerfile + скрипты запуска
Taskfile.yml           # Автоматизация ΠΊΠΎΠΌΠ°Π½Π΄
pyproject.toml         # Зависимости ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ инструмСнтов

3. Π‘Ρ‚Π΅ΠΊ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ


4. Быстрый старт

4.1 Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ A: Π›ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎ (uv)

# Установка зависимостСй
uv sync

# Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ .env (см. Ρ€Π°Π·Π΄Π΅Π» ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния)
cp .env.example .env  # Ссли Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

# ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
uv run python src/manage.py migrate
uv run python src/manage.py createsuperuser

# Запуск dev-сСрвСра
uv run python src/manage.py runserver 0.0.0.0:8000

4.2 Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ B: Docker

# Запуск Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π΅Π± + postgres
docker compose up -d --build

# Π›ΠΎΠ³ΠΈ
docker compose logs -f web

# ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ (Ссли Π½Π΅ Π² entrypoint)
docker compose exec web python manage.py migrate

# Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π°Π΄ΠΌΠΈΠ½Π°
docker compose exec web python manage.py createadmin

4.3 Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Ρ… сСрвисов (Celery / Redis / RabbitMQ / Flower)

Π’ docker-compose.yml раскоммСнтируйтС Π½ΡƒΠΆΠ½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ: redis, rabbitmq, celery_worker, celery_beat, celery_flower. Π—Π°Ρ‚Π΅ΠΌ:

docker compose up -d --build

5. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния

ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ (ΠΏΡ€ΠΈΠΌΠ΅Ρ€ .env):

SECRET_KEY=changeme
DEBUG=true
ALLOWED_HOSTS=localhost,127.0.0.1
CSRF_TRUSTED_ORIGINS=http://localhost:8000

POSTGRES_DB=django
POSTGRES_USER=django
POSTGRES_PASSWORD=django
POSTGRES_HOST=postgres
POSTGRES_PORT=5432

# КСш / Celery (Redis)
REDIS_CACHE_URL=redis://redis:6379/1
CACHE_TIMEOUT=300
CELERY_BROKER=redis://redis:6379/0
CELERY_RESULT_BACKEND=redis://redis:6379/0

# RabbitMQ (Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅)
RABBITMQ_DEFAULT_USER=guest
RABBITMQ_DEFAULT_PASS=guest

# ΠŸΠΎΡ€Ρ‚Ρ‹
PORT=8001
CELERY_FLOWER=5555

Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ внСшний Π±Ρ€ΠΎΠΊΠ΅Ρ€ (RabbitMQ) β€” ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ CELERY_BROKER Π½Π° amqp://user:pass@rabbitmq:5672//.


6. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостями (uv)

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹:

uv sync                 # ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ всС Π³Ρ€ΡƒΠΏΠΏΡ‹ (dev, test, lint, typecheck)
uv add <pkg>            # Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ
uv remove <pkg>         # ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ
uv pip compile          # ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ lock (Ссли Π½ΡƒΠΆΠ½ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ)

7. Management-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

Команда НазначСниС
makeapp <name> Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² apps/, ΡΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ apps.py
secret_key Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ SECRET_KEY

Запуск:

python manage.py makeapp blog

8. API докумСнтация

Доступно послС запуска:

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ β€” core/config/swagger.py (ΠΏΡ€ΠΈ нСобходимости Ρ€Π°ΡΡˆΠΈΡ€ΡŒΡ‚Π΅).


9. АутСнтификация (SimpleJWT)

Настройки Π² core/config/jwt.py.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ получСния Ρ‚ΠΎΠΊΠ΅Π½Π° (Ссли настроСн эндпоинт):

POST /api/auth/token/  {"username": "...", "password": "..."}

10. ΠœΠ½ΠΎΠ³ΠΎΡΠ·Ρ‹Ρ‡Π½ΠΎΡΡ‚ΡŒ

ГСнСрация / компиляция сообщСний:

python manage.py makemessages -l ru -l uz -l en
python manage.py compilemessages

Rosetta позволяСт Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹ Ρ‡Π΅Ρ€Π΅Π· UI.


11. Админ-панСль (Unfold)

Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ соврСмСнный UI. Навигация ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ настройки β€” см. Ρ„Π°ΠΉΠ» core/config/unfold_navigation.py. ДобавляйтС прилоТСния Π² списки INSTALLED_APPS (Ρ‡Π΅Ρ€Π΅Π· PROJECT_APPS).


12. Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ (CKEditor 5)

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ CKEditor5Field для тСкстовых ΠΏΠΎΠ»Π΅ΠΉ:

from django_ckeditor_5.fields import CKEditor5Field

body = CKEditor5Field(config_name="default")

Настройку ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ вынСсти Π² core/config/ckeditor5.py.


13. КСш и Redis

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Π² core/config/cache.py. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ использования:

from django.core.cache import cache

cache.set("key", "value", 60)
value = cache.get("key")

БСссии Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‡Π΅Ρ€Π΅Π· кСш (SESSION_ENGINE).


14. Ѐоновая ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π·Π°Π΄Π°Ρ‡ (Celery)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π°Π΄Π°Ρ‡ΠΈ:

# apps/shared/tasks.py
from celery import shared_task


@shared_task
def add(x, y):
    return x + y

Запуск локально:

celery -A core worker -l info
celery -A core beat -l info

Flower (ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³):

celery -A core flower --port=5555

15. ΠšΠ°Ρ‡Π΅ΡΡ‚Π²ΠΎ ΠΊΠΎΠ΄Π° (ruff, mypy, deptry, pre-commit)

Taskfile Ρ†Π΅Π»ΠΈ:

task lint      # ruff check
task format    # Π°Π²Ρ‚ΠΎΡ„ΠΎΡ€ΠΌΠ°Ρ‚ + фиксы
task typecheck # mypy
task deptry    # Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ зависимости
task all       # ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ (ΠΊΠ°ΠΊ CI)

16. ВСстированиС

Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡ‚Π΅ тСсты Π² tests/ ΠΈΠ»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ прилоТСния (apps/<app>/tests/). Запуск:

uv run pytest -vv

ΠŸΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ (ΠΏΡ€ΠΈΠΌΠ΅Ρ€):

uv run pytest --cov=apps --cov-report=term-missing

17. Π›ΠΎΠ³ΠΈ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³

Π Π°ΡΡˆΠΈΡ€ΡΠΉΡ‚Π΅ core/config/logs.py (Ссли потрСбуСтся) для JSON-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°. РСкомСндуСтся интСграция с Sentry / OpenTelemetry Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅.


18. Docker / ΠŸΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ


19. ОбновлСниС / Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ прилоТСния:

python manage.py makeapp blog

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π΅Π³ΠΎ Π² Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΡŽ Unfold ΠΏΡ€ΠΈ нСобходимости.


20. Donate & ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹

Автор: Jahongir Hakimjonov

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ:

donate pypi


Star History

Star History Chart

</a>


ЛицСнзия

MIT β€” см. Ρ„Π°ΠΉΠ» LICENSE.


TODO ИдСи

PR ΠΏΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ!