Блог на Django #5: Создание и активация приложения

В руководствах по этому фреймворку вы будете встречать слова «проект» и «приложение». В Django проектом называется установка Django с определенными настройками. Приложение — это группа моделей, представлений, шаблонов и URL.

Приложение взаимодействует с фреймворком для предоставления различных возможностей. Его можно задействовать и в других наработках. Проектом можно считать сайт, которые включает приложения: блог, справочник или форум, которые найдут применение и в других проектах.

Создание приложения

Создадим приложение блога на Django. В командной строке из корневого каталога проекта нужно ввести следующее:

python manage.py startapp blog

Это создаст стандартную структуру:

blog/ 
    __init__.py 
    admin.py 
    apps.py 
    migrations/ 
        __init__.py 
    models.py 
    tests.py 
    views.py

Файлы в нем выполняют такие задачи:

  • admin.py — здесь регистрируются модели, которые будут использоваться в административном сайте Django (его необязательно использовать).
  • apps.py — включает настройку blog.
  • migrations — этот каталог включает миграции базы данных приложения. С их помощью Django сохраняет информацию об изменении моделей и соответственно синхронизирует базу данных.
  • models.py — модели данных приложения. Все приложения Django должны иметь файл models.py, но он может оставаться пустым.
  • tests.py — здесь можно добавлять тесты для приложения.
  • views.py — здесь находится логика приложения. Каждое представление получает HTTP-запрос, обрабатывает его и возвращает ответ.

Активация приложений

Чтобы Django имел возможность отслеживать приложение и мог создавать для моделей базы данных, приложение нужно активировать. Для этого требуется отредактировать файл settings.py и добавить в INSTALLED_APP пункт blog.apps.BlogConfig. Теперь он должен выглядеть так:

INSTALLED_APPS = [
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'blog.apps.BlogConfig',
]

Класс BlogConfig — это настройка целого приложения. Теперь Django знает, что оно активно и сможет загружать его модели.