Программа курса:

1.1 - Как работает интернет и веб-сайты 1.2 - Краткий конспект по HTML 1.3 - Кратко о SQL
2.1 - Что такое Django? 2.2 - Основные принципы MVC 2.3 - Установка Django и создание проекта HelloWorld 2.4 - Диспетчер URL, часть 1. 2.5 - Диспетчер URL, часть 2. 2.6 - Шаблоны, часть 1. 2.7 - Шаблоны, часть 2. 2.8 - Введение в тестирование приложений
3.1 - Создание проекта, первые модели и админ-панель 3.2 - Модели в Django и их поля 3.3 - Первые ORM запросы CRUD 3.4 - Организация связей между таблицами 3.5 - Django ORM методы возвращающие QuerySet 3.6 - Django ORM методы которые не возвращают QuerySet 3.7 - Django ORM поисковые поля и агрегатные функции 3.8 - Views/Templates/URLs
4.1 - Формы в Django 4.2 - CRUD проект
5.1 - Создание проекта и приложения 5.2 - Создание моделей данных блога 5.3 - Сайт администрирования 5.4 - Работа с наборами запросов QuerySet и менеджерами 5.5 - Разработка представлений списка и детальной информации 5.6 - Создание шаблонов представлений 5.7 - Итоги работы
6.1 - Работа с URL 6.2 - Добавление постраничной разбивки 6.3 - Разработка представлений на основе классов 6.4 - Рекомендация постов по электронной почте 6.5 - Создание системы комментариев 6.6 - Добавление функциональности тегирования 6.7 - Извлечение постов по сходству 6.8 - Реализация конкретно-прикладных шаблонных тегов и фильтров 6.9 - Добавление карты сайта 6.10 - Установка базы данных PostgreSQL 6.11 - Добавление полнотекстового поиска в блог
7.1 - Введение в пользовательскую систему Django 7.2 - Использование системы аутентификации Django 7.3 - Доработки системы авторизации и регистрации добавление сессий 7.4 - Профили пользователей и пользовательские поля модели User 7.5 - Авторизация через социальные сети посредством OAuth 2.0 7.6 - Улучшаем дизайн блога с использованием Bootstrap 5 7.7 - Итоги работы
8.1 - Введение в REST API 8.2 - Django REST Framework на примере блога 8.3 - Сериализаторы 8.4 - Представления 8.5 - Фильтрация и поиск 8.6 - Пагинация 8.7 - Права доступа и токены в DRF 8.8 - Схемы и документация 8.9 - Итоги работы
9.1 - Покупка VPS, доменного имени, привязка DNS и настройка по SSH. 9.2 - Установка виртуального окружения Gunicorn и списка зависимостей 9.3 - Установка PostgreSQL, настройка и перенос БД 9.4 - Установка и настройка NGINX 9.5 - Получение SSL сертификата от Lets Encrypt и настройка HTTPS
10.1 - Начало работы, создание модели статей 10.2 - Создание древовидной модели категорий 10.3 - Представления на основе классов 10.4 - Работа с ListView, вывод списка статей 10.5 - Работа с DetailView, форматирование и обработка кириллицы в Slug 10.6 - Вывод дерева категорий, пагинация, добавление Bootstrap 5 10.7 - Оптимизация SQL запросов и установка Debug-Toolbar 10.8 - Профили пользователей. Модели и сигналы 10.9 - Профили пользователей. Представления и формы. 10.10 - Работа с CreateView. Добавление записей пользователями. 10.11 - Работа с UpdateView. Обновление записей пользователями. 10.12 - Использование миксинов в работе с представлениями Django 10.13 - Доработки системы авторизации и регистрации 10.14 - Итоги работы
11.1 - Создание древовидных комментариев 11.2 - Создание древовидных комментариев, добавление JavaScript 11.3 - Добавление функциональности тегирования 11.4 - Добавление ReCAPTCHA для форм 11.5 - Интеграция WYSIWYG-редактора, установка CKEditor 5 11.6 - Создание системы Like/Dislike 11.7 - Добавление RSS ленты для блога 11.8 - Кеширование и Middleware для получения статуса пользователей 11.9 - Свои шаблоны для страниц ошибок 403, 404 11.10 - Итоги работы

Настройки проекта

 

Файл settings.py в Django содержит множество настроек, которые определяют поведение вашего проекта. Разделим их на основные категории и рассмотрим наиболее важные параметры в каждой категории:

1. Базовые настройки проекта:

  • BASE_DIR: Абсолютный путь к корневому каталогу проекта. Обычно используется для построения других путей. По умолчанию определяется с помощью Path(__file__).resolve().parent.parent.
  • DEBUG: Булево значение. True включает отладочный режим, предоставляющий подробную информацию об ошибках и упрощающий разработку. Обязательно выключайте DEBUG = False в продакшене.
  • ALLOWED_HOSTS: Список разрешенных хостов, с которых могут обслуживаться ваши приложения проекта. Это критически важный параметр для безопасности, предотвращающий атаки типа “подмена хоста”. В продакшене должен содержать только домен вашего сайта (или его IP-адрес).
  • SECRET_KEY: Случайно сгенерированный секретный ключ, используемый для защиты от подделок CSRF (Cross-Site Request Forgery) и других атак. Генерируйте его с помощью python manage.py shell и import secrets; secrets.token_hex(32) и никогда не коммитите в публичный репозиторий!


2. Настройки приложений:

  • INSTALLED_APPS: Список установленных приложений в проекте, если приложение присутствует в проекте, но не добавлено в этот список, то оно не будет работать.
  • MIDDLEWARE: Список промежуточных программных компонентов.


3. Настройки URL:

  • ROOT_URLCONF: Путь к файлу URL-конфигурации вашего проекта (например 'myproject.urls' ).


4. Шаблоны:

  • TEMPLATES: Список настроек для системы шаблонизации. Определяет пути к директориям с шаблонами, используемый движок шаблонов (обычно django.template.backends.django.DjangoTemplates) и другие параметры.
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR / 'templates'],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

 


5. Базы данных:

  • DATABASES: Словарь, определяющий конфигурацию базы данных. Включает в себя имя движка(например 'django.db.backends.sqlite3'), имя пользователя, пароль, имя базы данных, хост и порт.
    Например для PostgreSQL:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'my_db',
        'USER': 'my_user',
        'PASSWORD': 'my_user_pass',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}

 


6. Статические файлы:

  • STATIC_URL: URL-префикс для статических файлов (например, /static/).
  • STATICFILES_DIRS: Список путей к директориям со статическими файлами.
  • STATIC_ROOT: Путь к директории, куда будут собираться статические файлы для продакшена (используется командой collectstatic).


7. Медиафайлы:

  • MEDIA_URL: URL-префикс для медиафайлов (например, /media/).
  • MEDIA_ROOT: Путь к директории, где будут храниться медиафайлы.


8. Безопасность:

  • CSRF_COOKIE_SECURE: Требует безопасного соединения (HTTPS) для куки CSRF. Должно быть True в продакшене.
  • SESSION_COOKIE_SECURE: Требует безопасного соединения (HTTPS) для сессионных куки. Должно быть True в продакшене.
  • SECURE_SSL_REDIRECT: Перенаправляет все HTTP-запросы на HTTPS. Должно быть True в продакшене.
  • SECURE_HSTS_SECONDS: Время в секундах, в течение которого браузер должен использовать только HTTPS для соединения с сайтом (HTTP Strict Transport Security).


9. Локализация:

  • LANGUAGE_CODE: Код языка по умолчанию (например, 'ru-ru').
  • TIME_ZONE: Часовой пояс (например, 'Europe/Moscow').
  • USE_I18N: Включает интернационализацию.
  • USE_L10N: Включает локализацию.
  • USE_TZ: Включает использование часовых поясов.


10. Почтовые настройки:

  • EMAIL_BACKEND: Движок для отправки почты.
  • EMAIL_HOST: Хост почтового сервера.
  • EMAIL_PORT: Порт почтового сервера.
  • EMAIL_HOST_USER: Имя пользователя для почтового сервера.
  • EMAIL_HOST_PASSWORD: Пароль для почтового сервера.

 

Это далеко не полный список всех параметров, но он охватывает наиболее важные и часто используемые настройки. Для получения полного списка и подробного описания каждого параметра обратитесь к официальной документации Django . Запомните, что многие из этих параметров критичны для безопасности и производительности вашего приложения, особенно в продакшене. Правильная настройка settings.py - залог успешной работы вашего Django проекта.

Не волнуйтесь, если вы многое не понимаете из того, что здесь видите. Подробнее о различных настроечных параметрах Django мы узнаем дальше.

Перейти к следующему шагу

Возникли вопросы при прочтении лекции? Задайте вопрос в комментариях

Комментарии