1.3. Приложения

Приложение в Django — это отдельный фрагмент функциональности разрабатываемого сайта, более или менее независимый от других таких же фрагментов и входящий в состав проекта. Приложение может реализовывать работу всего сайта, его раздела или же какой-либо внутренней подсистемы сайта, используемой другими приложениями.

Любое приложение представляется обычным пакетом Python, в котором содержатся модули с программным кодом. Этот пакет находится в папке проекта — там же, где располагается пакет конфигурации. Имя пакета приложения станет именем самого приложения.

Создадим приложение с именем firstapp командой. Для этого остановим отладочный веб-сервер, перейдем в папку проекта и введем следующую команду:

$ python manage.py startapp firstapp

Команда startapp утилиты manage.py запускает создание нового приложения с определенным именем. Структура проекта изменится, добавиться директория firstapp с определенными файлами:

firstsite
├───env/
├───firstapp/
│   ├───migrations/
│   │   └───__init__.py
│   ├───__init__.py
│   ├───admin.py
│   ├───apps.py
│   ├───models.py
│   ├───test.py
│   └───views.py
├───firstsite/
│   ├───__init__.py
│   ├───asgi.py
│   ├───settings.py
│   ├───urls.py
│   └───wsgi.py
└───manage.py

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

  1. migrations/ — папка вложенного пакета, в котором будут храниться сгенерированные Django миграции. Пока что в папке находится лишь пустой файл __init__.py, помечающий ее как полноценный пакет Python;

  2. __init__.py — пустой файл, сигнализирующий исполняющей среде Python, что эта папка — пакет;

  3. admin.py — модуль административных настроек и классов-редакторов;

  4. apps.py — модуль с настройками приложения;

  5. models.py — модуль с моделями;

  6. tests.py — модуль с тестирующими процедурами;

  7. views.py — модуль с контроллерами.

Каждый раз при создании приложения, следует его регистрировать в системе Django. Откроем settings.py и найдем следующий фрагмент кода:

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

Список, хранящийся в переменной INSTALLED_APPS, перечисляет все приложения, зарегистрированные в проекте и участвующие в его работе. Изначально в этом списке присутствуют только стандартные приложения, входящие в состав Django и реализующие различные встроенные подсистемы фреймворка. Так, приложение django.contrib.auth реализует подсистему разграничения доступа, а приложение django.contrib.sessions — подсистему, обслуживающую серверные сессии.

Зарегистрируем наше приложение в системе Django. Для этого напишем:

INSTALLED_APPS = [
    . . .
    'firstapp.apps.FirstappConfig',
]

Мы указали строку с путем к классу FirstappConfig, описывающему конфигурацию приложения и объявленному в модуле apps.py пакета приложения firstapp.

Сохраним все изменения и напишем свой первый контроллер.

Last updated