environment emprovements
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2025-11-04 21:18:15 +09:00
parent eb55d06c44
commit 20014d3a81
5 changed files with 351 additions and 137 deletions

View File

@@ -29,35 +29,20 @@ SECRET_KEY = os.getenv('DJANGO_SECRET_KEY')
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = os.getenv('DJANGO_DEBUG', 'False') == 'True'
ALLOWED_HOSTS = ['*'] # Разрешаем доступ с любых хостов для разработки
# Allowed hosts из переменных окружения
ALLOWED_HOSTS = os.getenv('DJANGO_ALLOWED_HOSTS', 'localhost,127.0.0.1').split(',')
# CSRF trusted origins из переменных окружения
CSRF_TRUSTED_ORIGINS = os.getenv('DJANGO_CSRF_TRUSTED_ORIGINS', '').split(',') if os.getenv('DJANGO_CSRF_TRUSTED_ORIGINS') else []
# Отключаем APPEND_SLASH для корректной работы API с Next.js proxy
APPEND_SLASH = False
APPEND_SLASH = os.getenv('DJANGO_APPEND_SLASH', 'False') == 'True'
CORS_ALLOWED_ORIGINS = [
"http://127.0.0.1:3000",
"http://localhost:3000",
"http://127.0.0.1:3001",
"http://localhost:3001",
"http://192.168.219.108:3000",
"http://192.168.219.108:3001",
"http://192.168.219.108:8000",
"http://192.168.219.108:8001",
]
CORS_ALLOW_ALL_ORIGINS = True # Для разработки
CORS_ALLOW_CREDENTIALS = True
CORS_ALLOW_HEADERS = [
'accept',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
]
# CORS настройки из переменных окружения
CORS_ALLOWED_ORIGINS = os.getenv('CORS_ALLOWED_ORIGINS', '').split(',') if os.getenv('CORS_ALLOWED_ORIGINS') else []
CORS_ALLOW_ALL_ORIGINS = os.getenv('CORS_ALLOW_ALL_ORIGINS', 'False') == 'True'
CORS_ALLOW_CREDENTIALS = os.getenv('CORS_ALLOW_CREDENTIALS', 'True') == 'True'
CORS_ALLOW_HEADERS = os.getenv('CORS_ALLOW_HEADERS', 'accept,accept-encoding,authorization,content-type,dnt,origin,user-agent,x-csrftoken,x-requested-with').split(',')
# Application definition
@@ -126,8 +111,8 @@ REST_FRAMEWORK = {
from datetime import timedelta
SIMPLE_JWT = {
'ACCESS_TOKEN_LIFETIME': timedelta(minutes=60),
'REFRESH_TOKEN_LIFETIME': timedelta(days=1),
'ACCESS_TOKEN_LIFETIME': timedelta(minutes=int(os.getenv('JWT_ACCESS_TOKEN_LIFETIME_MINUTES', '60'))),
'REFRESH_TOKEN_LIFETIME': timedelta(days=int(os.getenv('JWT_REFRESH_TOKEN_LIFETIME_DAYS', '1'))),
'AUTH_HEADER_TYPES': ('Bearer',),
}
@@ -170,13 +155,13 @@ AUTH_PASSWORD_VALIDATORS = [
# Internationalization
# https://docs.djangoproject.com/en/5.2/topics/i18n/
LANGUAGE_CODE = 'ru-ru'
LANGUAGE_CODE = os.getenv('DJANGO_LANGUAGE_CODE', 'ru-ru')
TIME_ZONE = 'UTC'
TIME_ZONE = os.getenv('DJANGO_TIME_ZONE', 'UTC')
USE_I18N = True
USE_I18N = os.getenv('DJANGO_USE_I18N', 'True') == 'True'
USE_TZ = True
USE_TZ = os.getenv('DJANGO_USE_TZ', 'True') == 'True'
# Static files (CSS, JavaScript, Images)
@@ -185,7 +170,7 @@ USE_TZ = True
STATIC_ROOT = BASE_DIR / 'staticfiles'
# URL, по которому статика будет доступна
STATIC_URL = '/static/'
STATIC_URL = os.getenv('DJANGO_STATIC_URL', '/static/')
# WhiteNoise настройки
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
@@ -195,5 +180,14 @@ STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
MEDIA_URL = '/storage/'
MEDIA_ROOT = BASE_DIR / 'storage'
MEDIA_URL = os.getenv('DJANGO_MEDIA_URL', '/storage/')
MEDIA_ROOT = BASE_DIR / 'storage'
# Настройки безопасности из переменных окружения
SECURE_SSL_REDIRECT = os.getenv('DJANGO_SECURE_SSL_REDIRECT', 'False') == 'True'
SECURE_HSTS_SECONDS = int(os.getenv('DJANGO_SECURE_HSTS_SECONDS', '0'))
SECURE_HSTS_INCLUDE_SUBDOMAINS = os.getenv('DJANGO_SECURE_HSTS_INCLUDE_SUBDOMAINS', 'False') == 'True'
SECURE_HSTS_PRELOAD = os.getenv('DJANGO_SECURE_HSTS_PRELOAD', 'False') == 'True'
SECURE_CONTENT_TYPE_NOSNIFF = os.getenv('DJANGO_SECURE_CONTENT_TYPE_NOSNIFF', 'True') == 'True'
SECURE_BROWSER_XSS_FILTER = os.getenv('DJANGO_SECURE_BROWSER_XSS_FILTER', 'True') == 'True'
X_FRAME_OPTIONS = os.getenv('DJANGO_X_FRAME_OPTIONS', 'DENY')