From e81f13cb7e66a254ba6875c95efd534373357b8d Mon Sep 17 00:00:00 2001 From: prog1764 Date: Tue, 4 Aug 2026 20:07:57 +0400 Subject: [PATCH] =?UTF-8?q?docs+chore:=20.env.example,=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B0=20.env,=20README=20=D0=BF?= =?UTF-8?q?=D0=BE=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D0=B5?= =?UTF-8?q?=20=D0=BE=D0=BA=D1=80=D1=83=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F=20(PR?= =?UTF-8?q?J-5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - settings.py: load_dotenv из .env (python-dotenv) - requirements.txt: + python-dotenv - .env.example: DJANGO_SECRET_KEY / DJANGO_DEBUG / DJANGO_ALLOWED_HOSTS с инструкциями - README: секция настройки окружения, миграции (в т.ч. таблицы django-axes) - проверено: manage.py check без ошибок, migrate создал таблицы axes --- .env.example | 12 ++++++++++++ README.md | 24 +++++++++++++++++++++--- config/settings.py | 5 +++++ requirements.txt | 1 + 4 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 .env.example diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..210920f --- /dev/null +++ b/.env.example @@ -0,0 +1,12 @@ +# Скопируйте этот файл в .env и заполните реальными значениями. +# .env никогда не должен попадать в git (уже в .gitignore). + +# Обязательно. Секретный ключ Django. +# Сгенерировать: python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())" +DJANGO_SECRET_KEY= + +# Включить режим отладки (ТОЛЬКО для разработки!): 1 = да, пусто/0 = нет +DJANGO_DEBUG=1 + +# Разрешённые хосты через запятую (для продакшена: ваш домен) +DJANGO_ALLOWED_HOSTS=127.0.0.1,localhost diff --git a/README.md b/README.md index ddd8a39..06a5e88 100644 --- a/README.md +++ b/README.md @@ -67,16 +67,34 @@ .\.venv\Scripts\python.exe -m pip install -r requirements.txt ``` -### 2. Подготовка базы +### 2. Настройка окружения + +Скопируйте `.env.example` в `.env` и заполните: + +```powershell +Copy-Item .env.example .env +``` + +Обязательные переменные (без них приложение не стартует): + +| Переменная | Описание | +| --- | --- | +| `DJANGO_SECRET_KEY` | Секретный ключ Django. Сгенерировать: `python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"` | +| `DJANGO_DEBUG` | `1` для разработки, пусто/`0` для продакшена | +| `DJANGO_ALLOWED_HOSTS` | Разрешённые хосты через запятую (в проде — домен) | + +`.env` в git не попадает (уже в `.gitignore`). + +### 3. Подготовка базы ```powershell .\.venv\Scripts\python.exe manage.py migrate .\.venv\Scripts\python.exe manage.py createsuperuser ``` -Команда `createsuperuser` попросит придумать логин и пароль для кабинета преподавателя. +`migrate` создаст таблицы проекта и django-axes (защита от брутфорса). -### 3. Запуск +### 4. Запуск ```powershell .\.venv\Scripts\python.exe manage.py runserver diff --git a/config/settings.py b/config/settings.py index 0935d88..f73a025 100644 --- a/config/settings.py +++ b/config/settings.py @@ -2,9 +2,14 @@ import os from pathlib import Path +from dotenv import load_dotenv + BASE_DIR = Path(__file__).resolve().parent.parent +# Загружаем переменные из .env (если есть) — секреты не храним в коде. +load_dotenv(BASE_DIR / ".env") + # --- Секреты только из окружения: без env приложение не стартует --- SECRET_KEY = os.environ.get("DJANGO_SECRET_KEY") if not SECRET_KEY: diff --git a/requirements.txt b/requirements.txt index 4322ec8..51030d4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ Django>=5.0,<6.0 django-axes>=8.3.1 +python-dotenv>=1.0