Everything you wanted to know
about the Django framework

Структура шаблонов в Django

Существует два основных способа организации структуры шаблонов Django: на уровне приложений и пользовательский, на уровне проекта, который указывается в setting.py.

На уровне приложений

По умолчанию загрузчик шаблонов Django ищет в каждом приложении каталог templates (за это отвечает параметр APP_DIRS в настройках проекта). Для предотвращения неразберихи в пространстве имен также рекомендуется создавать в этом каталоге еще вложенный каталог, названный также как и приложение.

Например, у нас есть проект example_project с приложением pages и файлом шаблона home.html, тогда правильная структура будет выглядеть так: в приложении pages мы создаем каталог templates, а в нем каталог pages, в котором и разместим файл home.html:

├── example_project
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
|   └── pages
|      ├── __init__.py
│      ├── admin.py
│      ├── apps.py
│      ├── models.py
│      ├── tests.py
│      └── views.py
|      ├── templates
|          ├── pages
|              ├── home.html
└── manage.py

Уровень проекта

В процессе разрастания проекта Django часто предпочтительным способом будет хранть все шаблоны в одном месте, чем распределять их по всем приложениям. Сделать это можно настройкой в settings.py.

Обновим параметр 'DIRS' в параметре TEMPLATES, где укажем в дополнение к поиску шаблонов в каталогах приложений, поиск шаблонов в отдельном каталоге на уровне проекта.

# settings.py
TEMPLATES = [
    {
        ...
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        ...
    },
]

Теперь создадим каталог templates в каталоге проекта. Теперь структура нашего проекта быдет выглядеть так:

├── example_project
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
|   └── pages
|      ├── __init__.py
│      ├── admin.py
│      ├── apps.py
│      ├── models.py
│      ├── tests.py
│      └── views.py
├── templates
    ├── home.html
└── manage.py

Заключение

Запомните, что загрузчик шаблонов сначала ищет их в приложениях, а уже затем, если настроен DIRS, в каталоге templates проекта. Это не совсем "правильный" путь организации шаблонов, но большинство разработчиков, включая и автора, предпочитают использование шаблонов на уровне проекта.

От себя хочу добавить, что использовать общий каталог можно для шаблонов, которые не относятся к конкретным приложениям или используются многими приложениями в проекте. Например, базовый шалон base.html, который потом наследуют другие шаблоны.

Источник: https://wsvincent.com/django-tips-template-structure/

Поделитесь с другими:

Представления-классы
(Class-Based Views)

Детальное описание и структура классов Django.

Пользовательская модель User

Каждый новый проект Django должен использовать пользовательскую модель User. Официальная документация Django гласит, что это «настоятельно рекомендуется», но я сделаю еще один шаг и без колебаний скажу: вы просто с ума сошли, если не использовали пользовательскую модель раньше.

Исправление ошибок, Django 2.1.8

Выпущена новая версия Django 2.1.8, в которой исправлена ошибка в админке, допущенная в версии 2.1.7: запрещено редактировать inline-элементы для ManyToManyField, если у пользователя есть только разрешение на просмотр.

Аутентификация в Django: полный пример входа, выхода и смены пароля

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

Django 2.2 предварительный выпуск 1

Выпущен релиз-кандидат 1 версии Django 2.2, в котором вы можете предварительно протестировать некоторые новые возможности перед выпуском Django 2.2.

Поиск узких мест производительности проекта на Django

При оптимизации производительности веб-приложения распространенная ошибка — начинать с оптимизации самой медленной страницы (или API). Помимо учета времени отклика, мы также должны учитывать трафик, который он получает, чтобы определить порядок оптимизации. В этой статье мы расскажем о веб-приложении Django, найдем узкие места с высокой эффективностью, а затем приступим к их оптимизации для повышения производительности.

Просмотр SQL запросов Django

Django ORM позволяет легко взаимодействовать с базой данных. Чтобы понять, что происходит за кулисами или увидеть производительность SQL, мы можем записать все запросы SQL, которые выполняются. В этой статье мы увидим различные способы достижения этого.

Как подключить виджет выбора даты в Django

Из этого руководства вы узнаете как легко подключить виджет выбора даты в своем проекте Django. Мы узнаем, как установить его вручную, потом как настроить пользовательский виджет и, наконец, как использовать стороннее приложение Django с поддержкой средств выбора даты и времени.

Исправление ошибок, Django 2.0.13

Сегодня был осуществлен новый выпуск исправлений Django 2.0.13. Исправлен сбой в django.utils.numberformat.format_number(), когда число имеет более 200 цифр (#30177).

Новый формат middleware в Django 2

MIddleware (промежуточный слой) используются для модификации объекта приходящего запроса в представление (view) или для модификации объекта ответа, возвращаемого из представления. Они позволяют нам изменять запросы/ответы глобально.

Массовое обновление записей в Django используя аннотации и подзапросы

Как массово обновлять записи в Django с помощью аннотаций и подзапросов.