No description
  • Python 79.2%
  • Shell 11.4%
  • Go Template 9.4%
Find a file
2026-09-27 16:14:32 +03:00
app update 2026-09-27 16:14:32 +03:00
bin update 2026-09-27 16:14:32 +03:00
deploy update 2026-09-27 16:14:32 +03:00
docs stub directories 2026-04-29 11:43:58 +03:00
.gitignore update 2026-09-27 16:14:32 +03:00
.pre-commit-config.yaml update 2026-09-27 16:14:32 +03:00
dev-requirements.in update 2026-09-27 16:14:32 +03:00
dev-requirements.txt update 2026-09-27 16:14:32 +03:00
manage.py read env from settings 2026-04-29 11:26:42 +03:00
nose2.cfg test client, register error handlers, nose fix 2026-04-30 19:29:20 +03:00
pyrightconfig.json pyrightconfig.json 2026-05-01 04:58:06 +00:00
README.md update 2026-09-27 16:14:32 +03:00
requirements.in up to date 2026-06-14 20:09:16 +03:00
requirements.txt up to date 2026-06-14 20:09:16 +03:00
you_need_app_dotenv update 2026-09-27 16:14:32 +03:00

micro_django

Ядро/шаблон Django-проекта: app/config (инфраструктура), app/core (переиспользуемое, не привязанное к проекту) и каркас для модулей приложения.

Структура

.
├── .pre-commit-config.yaml   # запускает black через bin/dev/format
├── .tool-versions            # asdf: python/node (локальный, часто gitignored)
├── manage.py
├── nose2.cfg
├── pyrightconfig.json
├── app
│   ├── config                # settings, routers, wsgi, инфраструктура
│   │   ├── celery.py
│   │   ├── logging.py
│   │   ├── settings.py
│   │   ├── urls.py
│   │   └── wsgi.py
│   ├── core                  # общее для модулей, не project specific
│   │   ├── middlewares
│   │   │   ├── access_log.py # RequestLogMiddleware, включается LOG_ACCESS=1
│   │   │   ├── csrf.py
│   │   │   ├── request_id.py
│   │   │   └── urls.py
│   │   ├── models.py
│   │   └── utils
│   │       ├── classutils.py  # classproperty
│   │       ├── db.py          # query_exec / query_all_dict / query_all_scalar / ...
│   │       ├── env.py         # get_env_var
│   │       ├── i18n.py
│   │       ├── ip.py          # get_client_ip
│   │       ├── logging
│   │       │   ├── __init__.py
│   │       │   ├── context.py
│   │       │   ├── filters.py
│   │       │   ├── formatters.py
│   │       │   ├── handlers.py
│   │       │   └── loggers.py
│   │       ├── ninja
│   │       │   ├── handlers.py     # register_error_handlers
│   │       │   └── permissions.py
│   │       └── test
│   │           ├── client.py
│   │           └── nose2.py         # nose2-плагин, eager celery
│   ├── management            # application scripts to run from cli
│   │   └── commands
│   │       ├── __init__.py
│   │       └── run_playground.py
│   ├── media                 # user-uploaded stuff
│   │   └── .keep
│   ├── migrations
│   │   ├── 0001_initial.py
│   │   ├── 0002_user.py
│   │   └── __init__.py
│   ├── models
│   │   ├── __init__.py
│   │   └── auth.py
│   ├── schemas               # structs for serialization(pydantic/msgspec and similar)
│   │   └── __init__.py
│   ├── services              # business logic extracted from views and can be reused somewhere else, like management/commands
│   │   └── __init__.py
│   ├── staticfiles           # js/css/img
│   │   └── .keep
│   ├── tasks                 # celery tasks
│   │   └── __init__.py
│   ├── tests                 # we're using unittest-like approach
│   │   ├── __init__.py
│   │   └── test_hello.py
│   └── views                 # api is for ninja, others are for vanilla django
│       └── api
│           ├── hello.py
│           └── ping.py
├── bin                       # handy executables
│   ├── db_data_dump
│   ├── db_init
│   ├── db_schema_dump
│   ├── gen_nginx_conf
│   ├── supervisor
│   └── dev
│       ├── db_drop
│       ├── format            # black (line-length 88, migrations исключены)
│       ├── server
│       ├── test
│       └── venv
├── deploy                    # mostly production stuff
│   ├── README.md
│   ├── app-supervisor.service
│   ├── deployment-cheat-sheet.md
│   ├── deps-linux.sh
│   ├── nginx
│   │   ├── nginx-config.sh
│   │   └── nginx.conf.tpl
│   ├── pg
│   │   ├── init-pg.sh
│   │   └── init.sql.tpl
│   ├── supervisor-dev.conf
│   ├── supervisor-prod.conf
│   └── zabbix
│       ├── README.md
│       ├── userparameter_supervisor.conf
│       ├── zabbix
│       └── zabbix_v7_supervisor_template.json
├── docs                      # don't forget to populate this :)
│   └── .keep
├── dev-requirements.in
├── dev-requirements.txt
├── requirements.in
├── requirements.txt
└── you_need_app_dotenv

Быстрый старт

cp you_need_app_dotenv app.env   # заполнить переменные
bin/dev/venv                     # создать .venv и синхронизировать зависимости
bin/db_init                      # поднять postgres
bin/dev/server                   # runserver

Тесты (nose2, celery в eager-режиме):

bin/dev/test
bin/dev/test --parallel 4

Инструменты

  • Форматирование — black через bin/dev/format (исключает migrations/). Чтобы он бежал на коммите: pip install pre-commit && pre-commit install.
  • Логи запросов — выставить LOG_ACCESS=1 в app.env, чтобы включить RequestLogMiddleware (метод, путь, тела запроса/ответа, runtime).
  • Celery — очереди default и scheduled; beat-расписание в app/config/settings.py.
  • Деплой — см. deploy/README.md и deploy/deployment-cheat-sheet.md.