mod: использование .env
This commit is contained in:
20
.env.example
20
.env.example
@@ -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-файлам.
|
# Используется скриптом для генерации корректного Nginx конфига и alias к media-файлам.
|
||||||
# На локальной машине разработчика (Dev) эта переменная игнорируется.
|
# На локальной машине разработчика (Dev) эта переменная игнорируется.
|
||||||
@@ -5,6 +22,7 @@
|
|||||||
HOST_PROJECT_PATH=/home/user/docker-app/your-site
|
HOST_PROJECT_PATH=/home/user/docker-app/your-site
|
||||||
|
|
||||||
|
|
||||||
# Настройки достпа к пакетам в репозитории, чтобы wathtower мог проверять их свежесть и скачивать
|
# ==============================================
|
||||||
|
# Настройки достпа к пакетам в репозитории, чтобы watchtower мог проверять их свежесть и скачивать
|
||||||
REPO_USER=xxxxx
|
REPO_USER=xxxxx
|
||||||
REPO_PASS=xxxxx
|
REPO_PASS=xxxxx
|
||||||
|
|||||||
5
.gitignore
vendored
5
.gitignore
vendored
@@ -363,7 +363,8 @@ db.sqlite3-wal
|
|||||||
public/media/*
|
public/media/*
|
||||||
!public/media/README.md
|
!public/media/README.md
|
||||||
staticfiles/
|
staticfiles/
|
||||||
public/static/static_collected/
|
public/static_collected/
|
||||||
|
.github/
|
||||||
|
|
||||||
# Data Backup
|
# Data Backup
|
||||||
database/data.json
|
database/
|
||||||
|
|||||||
@@ -11,22 +11,48 @@ https://docs.djangoproject.com/en/6.0/ref/settings/
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
import environ
|
||||||
|
import os
|
||||||
|
|
||||||
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
||||||
BASE_DIR = Path(__file__).resolve().parent.parent
|
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
|
# Quick-start development settings - unsuitable for production
|
||||||
# See https://docs.djangoproject.com/en/6.0/howto/deployment/checklist/
|
# See https://docs.djangoproject.com/en/6.0/howto/deployment/checklist/
|
||||||
|
|
||||||
# SECURITY WARNING: keep the secret key used in production secret!
|
# 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!
|
# 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
|
# Application definition
|
||||||
|
|
||||||
@@ -71,11 +97,13 @@ WSGI_APPLICATION = 'lpon_site.wsgi.application'
|
|||||||
|
|
||||||
# Database
|
# Database
|
||||||
# https://docs.djangoproject.com/en/6.0/ref/settings/#databases
|
# https://docs.djangoproject.com/en/6.0/ref/settings/#databases
|
||||||
|
|
||||||
DATABASES = {
|
DATABASES = {
|
||||||
'default': {
|
'default': {
|
||||||
'ENGINE': 'django.db.backends.sqlite3',
|
'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
|
# Internationalization
|
||||||
# https://docs.djangoproject.com/en/6.0/topics/i18n/
|
# https://docs.djangoproject.com/en/6.0/topics/i18n/
|
||||||
|
LANGUAGE_CODE = 'ru-RU' #
|
||||||
LANGUAGE_CODE = 'en-us'
|
# TIME_ZONE = 'Etc/GMT+3' #
|
||||||
|
TIME_ZONE = 'Europe/Moscow' #
|
||||||
TIME_ZONE = 'UTC'
|
|
||||||
|
|
||||||
USE_I18N = True
|
USE_I18N = True
|
||||||
|
|
||||||
USE_TZ = True
|
USE_TZ = True
|
||||||
|
FIRST_DAY_OF_WEEK = 1 # неделя начинается с понедельника
|
||||||
|
DEFAULT_CHARSET = 'utf-8'
|
||||||
|
|
||||||
|
|
||||||
# Static files (CSS, JavaScript, Images)
|
# Static files (CSS, JavaScript, Images)
|
||||||
# https://docs.djangoproject.com/en/6.0/howto/static-files/
|
# 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')
|
||||||
|
|||||||
@@ -16,7 +16,8 @@ Including another URLconf
|
|||||||
"""
|
"""
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.urls import path
|
from django.urls import path
|
||||||
|
from lpon_site import settings
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('admin/', admin.site.urls),
|
path(settings.ADMIN_URL, admin.site.urls),
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user