Проект на django для демонстрации структуры ведения кодовой базы.
Это скорее шаблон, чтобы быстро по нему пройтись и восстановить контекст того, как надо.
Включает в себя работу с docker_compose, makefile, poetry.
В .gitignore добавляем:
.vscode/
*.pyc
.env
core/project/settings/local.py
static/*
!static/.gitkeep
*.sqlite*poetry initУстановка зависимостей:
poetry add django
poetry add psycopg2
poetry add environСтруктура будет сильно переиначена, поэтому делаем по шагам.
Создаем папку core в корне.
Создаем проект с названием project:
django-admin startproject projectПереносим созданный project в core.
Файл manage.py выносим в корень.
Создаем сразу в project папку settings, туда копируем settings.py и переименовываем в main.py.
Создаем local.py для локальных настроек и прописываем:
from .main import *
DEBUG = TrueМеням строчку project.settings во всех файлах на core.project.settings.local.
В manage.py меняем:
os.environ.setdefault('DJANGO_SETTINGS_MODULE',
'core.project.settings.local')В wsgi.py:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'core.project.settings.local')В asgi.py:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'core.project.settings.local')Меняем ROOT_URLCONF в main.py на:
ROOT_URLCONF = 'core.project.urls'А также:
WSGI_APPLICATION = 'core.project.wsgi.application'В корне создаем файл .env, выносим туда DJANGO_PORT и DJANGO_SECRET_KEY (при необходимости другие переменные окружения):
DJANGO_SECRET_KEY='django-insecure-2$cdfy4-o6dgkrr%xjd5xx*le!o3i3a2c2_540je6x$xvliz#-'
DJANGO_PORT=8000
POSTGRES_DB=habrdb
POSTGRES_USER=habrpguser
POSTGRES_PASSWORD=pgpwd4habr
POSTGRES_PORT=5435
POSTGRES_HOST=postgres
Для использования переменных меняем в main.py:
import environ
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent.parent.parent
env = environ.Env()
environ.Env.read_env(BASE_DIR / '.env')
# код код код
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/5.1/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = env('DJANGO_SECRET_KEY')
# код код код
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': env('POSTGRES_DB'),
'USER': env('POSTGRES_USER'),
'PASSWORD': env('POSTGRES_PASSWORD'),
'HOST': env('POSTGRES_HOST'),
'PORT': env('POSTGRES_PORT')
}
}В корне создаем папку docker_compose для хранения компоуз файлов.
В корне храним Dockerfile.
В core папка api.
Верисонность - это подпапки: v1.
Создаем файлы urls.py как в api, так и в v1. В этом файле будем прописывать url-ы от api.
urlpatterns = [
# urls
]В core.project.urls.py:
path('api/', include('core.api.urls'))
Приложения храним в core/apps.
Например, для продуктов:
python manage.py startapp products core/apps/productsНа уровне приложений разбиваем на entity, models, services и use_cases.
Тесты на сервисы и фактори.