mod: использование .env

This commit is contained in:
2026-05-26 11:01:01 +03:00
parent 75d359aeb3
commit f0502e605f
4 changed files with 69 additions and 17 deletions

View File

@@ -1,3 +1,20 @@
# Локальная конфигурация для dev-окружения lpon-site.
DJANGO_DEBUG=True
DJANGO_SECRET_KEY=insecure-dev-key-change-me-in-prod
DJANGO_ALLOWED_HOSTS=localhost,127.0.0.1,testserver,lpon.ru
DJANGO_ADMINS=YouName:you@email.com
DJANGO_CSRF_TRUSTED_ORIGINS=http://127.0.0.1:8000,http://localhost:8000,http://testserver,https://lpon.ru
# Доверенные источники для CSRF (важно для Docker/Nginx)
# Укажите здесь URL, по которому вы заходите на сайт (с протоколом и портом gunicorn)
CSRF_TRUSTED_ORIGINS=http://localhost:8000,http://127.0.0.1:8000,http://testserver,http://lpon.ru
# URL для доступа к админке Django (можно сменить для безопасности, чтобы боты не могли её найти)
DJANGO_ADMIN_URL=admin/
DJANGO_SQLITE_NAME=lpon-db.sqlite3
# ==============================================
# Системные пути на хосте (ТОЛЬКО ДЛЯ ПРОДАКШЕНА)
# Используется скриптом для генерации корректного Nginx конфига и alias к media-файлам.
# На локальной машине разработчика (Dev) эта переменная игнорируется.
@@ -5,6 +22,7 @@
HOST_PROJECT_PATH=/home/user/docker-app/your-site
# Настройки достпа к пакетам в репозитории, чтобы wathtower мог проверять их свежесть и скачивать
# ==============================================
# Настройки достпа к пакетам в репозитории, чтобы watchtower мог проверять их свежесть и скачивать
REPO_USER=xxxxx
REPO_PASS=xxxxx

5
.gitignore vendored
View File

@@ -363,7 +363,8 @@ db.sqlite3-wal
public/media/*
!public/media/README.md
staticfiles/
public/static/static_collected/
public/static_collected/
.github/
# Data Backup
database/data.json
database/

View File

@@ -11,22 +11,48 @@ https://docs.djangoproject.com/en/6.0/ref/settings/
"""
from pathlib import Path
import environ
import os
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
# Читаем переменные окружения
env = environ.Env()
environ.Env.read_env(os.path.join(BASE_DIR.parent, '.env'))
def _normalize_admin_url(value: str) -> str:
"""Приводит URL админки к виду `segment/` без ведущего слэша."""
normalized = value.strip().lstrip('/')
if not normalized:
return 'admin/'
if not normalized.endswith('/'):
normalized += '/'
return normalized
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/6.0/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-3xyml+!)erah-k23lf0=t=cf4$$e0nr*zls&l%pbz@kkv6qnwr'
SECRET_KEY = env('DJANGO_SECRET_KEY', default='3xym$l+!)erah-k23lf0=t=c_4$e0nr*zls&l%pbz@k6v6qn89')
ADMIN_URL = _normalize_admin_url(env('DJANGO_ADMIN_URL', default='admin/'))
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
DEBUG = env.bool('DJANGO_DEBUG', default=False)
ALLOWED_HOSTS = []
ALLOWED_HOSTS = env.list(
'DJANGO_ALLOWED_HOSTS',
default=['127.0.0.1', 'localhost', 'testserver', 'lpon.ru'],
)
CSRF_TRUSTED_ORIGINS = env.list('DJANGO_CSRF_TRUSTED_ORIGINS', default=['127.0.0.1', 'localhost', 'testserver'])
#########################################
# Настройки сообщений об ошибках когда все упало и т.п.
ADMINS = tuple(
tuple(item.split(':', 1))
for item in env.list('DJANGO_ADMINS', default=['S.Erjemin:erjemin@gmail.com'])
)
# Application definition
@@ -71,11 +97,13 @@ WSGI_APPLICATION = 'lpon_site.wsgi.application'
# Database
# https://docs.djangoproject.com/en/6.0/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
'NAME': BASE_DIR.parent.joinpath('database', env('DJANGO_SQLITE_NAME', default='lpon-db.sqlite3')),
'OPTIONS': {
'timeout': 25,
},
}
}
@@ -101,17 +129,21 @@ AUTH_PASSWORD_VALIDATORS = [
# Internationalization
# https://docs.djangoproject.com/en/6.0/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
LANGUAGE_CODE = 'ru-RU' #
# TIME_ZONE = 'Etc/GMT+3' #
TIME_ZONE = 'Europe/Moscow' #
USE_I18N = True
USE_TZ = True
FIRST_DAY_OF_WEEK = 1 # неделя начинается с понедельника
DEFAULT_CHARSET = 'utf-8'
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/6.0/howto/static-files/
STATIC_URL = 'static/'
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
# Локальные каталоги проекта: медиа и статика лежат рядом в `public`.
PUBLIC_DIR = BASE_DIR.parent.joinpath('public') # Папка `public` находится в корне пректа
MEDIA_ROOT = PUBLIC_DIR.joinpath('media')
STATICFILES_DIRS = [PUBLIC_DIR.joinpath('static')]
STATIC_ROOT = PUBLIC_DIR.joinpath('staticfiles')

View File

@@ -16,7 +16,8 @@ Including another URLconf
"""
from django.contrib import admin
from django.urls import path
from lpon_site import settings
urlpatterns = [
path('admin/', admin.site.urls),
path(settings.ADMIN_URL, admin.site.urls),
]