JavaRush /Курси /Модуль 3: Django /Файли налаштувань Django

Файли налаштувань Django

Модуль 3: Django
Рівень 2 , Лекція 4
Відкрита

Ласкаво просимо на лекцію, в якій ми розберемося з основним мозковим центром будь-якого проєкту Django — файлом налаштувань settings.py. Якщо ваш проєкт — це космічний корабель, то settings.py — це його панель управління, де задаються маршрути, налаштовуються системи безпеки, підключаються двигуни (наприклад, бази даних) і навіть визначається, чи можна відключити сигналізацію (спойлер: не можна).

Файл settings.py визначає параметри конфігурації вашого проєкту. Це не просто набір випадкових рядків коду, а ключова частина, яка впливає на такі речі, як:

  • Безпека застосунку.
  • Підключення до баз даних.
  • Локальні та продакшн налаштування.
  • Управління модулями та застосунками.
  • Як проєкт буде справлятися з завершальними лапками (жарт, хоча це теж важливо).

За допомогою налаштувань ви можете швидко перемикатися між різними середовищами розробки та розгортання. Наприклад, у локальному середовищі потрібен DEBUG=True, а на продакшн-сервері — ні за яких обставин!

1. Основна структура settings.py

Давайте подивимось на стандартний settings.py. Він створюється автоматично при запуску команди django-admin startproject. Основні елементи:

# settings.py

from pathlib import Path

# Базова директорія проєкту
BASE_DIR = Path(__file__).resolve().parent.parent

# Безпека
SECRET_KEY = 'ваш_секретний_ключ'
DEBUG = True
ALLOWED_HOSTS = []

# Встановлені додатки
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

# Проміжні шари (middleware)
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

# URL-адреси та WSGI
ROOT_URLCONF = 'myproject.urls'
WSGI_APPLICATION = 'myproject.wsgi.application'

# База даних
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

# Мова та часовий пояс
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_TZ = True

# Статичні файли
STATIC_URL = 'static/'

# Налаштування медіаконтенту (якщо потрібно)
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'media'

1.1. BASE_DIR

Ця змінна визначає базову директорію проєкту. Вона створена за допомогою модуля pathlib, який спрощує роботу зі шляхами.

Ось що відбувається:

BASE_DIR = Path(__file__).resolve().parent.parent
  • __file__: шлях до поточного файлу (settings.py).
  • .resolve().parent.parent: дозволяє піднятись на два рівні вгору, щоб отримати шлях до кореневої директорії проєкту.

Якщо вам потрібно якесь місце для зберігання файлів (наприклад, логів), ви можете вручну додавати шляхи, використовуючи BASE_DIR:

LOGS_DIR = BASE_DIR / "logs"

1.2. SECRET_KEY

SECRET_KEY — це один із найважливіших параметрів. Він відповідає за шифрування токенів, хешування паролів та інші аспекти безпеки. Ніколи не діліться цим ключем і не завантажуйте його в публічні репозиторії (наприклад, GitHub).

Для генерації сильного ключа можна використовувати Django секретний генератор.

1.3. DEBUG

Цей параметр відповідає за увімкнення режиму відладки. Якщо DEBUG=True, на екрані браузера при помилках будуть відображатись подробиці про них. Це корисно на стадії розробки, але дуже небезпечно в продакшені. На бойовому сервері DEBUG повинен бути завжди встановлений у False.

Не забудьте, що при DEBUG=False ви також повинні заповнити ALLOWED_HOSTS.

1.4. ALLOWED_HOSTS

Цей параметр визначає список хостів (доменів), з яких ваш сервер приймає запити. За замовчуванням він порожній, але для продакшена сюди необхідно додати доменне ім'я вашого сайту, наприклад:

ALLOWED_HOSTS = ['example.com', 'www.example.com']

Для локального сервера можна залишити його порожнім або використовувати:

ALLOWED_HOSTS = ['127.0.0.1', 'localhost']

2. INSTALLED_APPS

Список застосунків, які активовані в проєкті. Django включає в проєкт кілька вбудованих застосунків, таких як:

  • django.contrib.admin — панель адміністратора.
  • django.contrib.auth — система автентифікації користувачів.
  • django.contrib.sessions — управління сесіями.
  • django.contrib.staticfiles — обробка статичних файлів.

Якщо ти додаєш новий застосунок у проєкт (наприклад, за допомогою python manage.py startapp blog), його також потрібно зареєструвати тут:

INSTALLED_APPS += ['blog']

3. MIDDLEWARE

MIDDLEWARE — це список проміжних шарів, які обробляють запити та відповіді. Кожен шар виконує свою задачу, наприклад:

  • SecurityMiddleware — обробляє налаштування безпеки.
  • CsrfViewMiddleware — захист від CSRF-атак.
  • SessionMiddleware — управління сесіями.

Порядок має значення: кожен шар обробляється зверху вниз.

4. Налаштування бази даних (DATABASES)

За замовчуванням Django використовує SQLite, але ти можеш підключити будь-яку іншу базу даних, наприклад, PostgreSQL, MySQL або навіть MongoDB (але за допомогою сторонніх бібліотек).

Приклад налаштування для PostgreSQL:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'mydatabase',
        'USER': 'mydatabaseuser',
        'PASSWORD': 'mypassword',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

Для роботи з PostgreSQL не забудь встановити пакет psycopg2:

pip install psycopg2

5. Часовий пояс і мова (LANGUAGE_CODE, TIME_ZONE)

Ці параметри задають мову та часовий пояс для проєкту. За замовчуванням встановлені англійська мова та UTC. Наприклад, для Молдови можна використовувати:

LANGUAGE_CODE = 'ro-RO'
TIME_ZONE = 'Europe/Chisinau'

Для відображення дат і часу також мають бути увімкнені:

  • USE_I18N: підтримка інтернаціоналізації.
  • USE_TZ: використання часових поясів.

6. Робота зі статичними та медіа-файлами (STATIC_URL, MEDIA_URL)

Django розділяє статичні файли (CSS, JS, зображення) та медіа-файли (файли, завантажені користувачами).

Статичні файли:

STATIC_URL = '/static/'
STATICFILES_DIRS = [BASE_DIR / 'static']

Медіа-файли (потрібно створити MEDIA_ROOT):

MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'media'

Рекомендації щодо управління налаштуваннями

  1. Розділіть налаштування для розробки та продакшена: використовуйте модуль os.environ або пакет django-environ для управління змінними оточення.

  2. Не зберігайте конфіденційні дані в репозиторії: приховану інформацію (ключі, паролі) зберігайте у файлі .env.

  3. Використовуйте шаблони та контейнери: наприклад, Docker дозволяє ефективно підключати налаштування до вашого проєкту через змінні оточення.

SECRET_KEY = os.getenv('SECRET_KEY', 'ваш_резервний_ключ')

Тепер ви готові використовувати settings.py як справжній майстер налаштування свого корабля Django!

3
Опитування
Налаштування середовища, рівень 2, лекція 4
Недоступний
Налаштування середовища
Налаштування середовища
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ