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.

Django DetailView - основы использования

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

Выпущены исправления Django: 2.2.7, 2.1.14 и 1.11.26

Сегодня команда разработчиков Django выпустила версии 2.2.7, 2.1.14 и 1.11.26 с исправлениями ошибок. Пакет и контрольные суммы доступны на странице загрузок, а также из индекса пакетов Python. Идентификатор ключа PGP, использованный в этом выпуске: Mariusz Felisiak: 2EF56372BA48CD1B.

Как заставить request.is_ajax() работать с JS fetch()

Объект запроса Django request имеет изящный небольшой метод is_ajax(). Он позволяет определить, поступил ли запрос от JS-фреймворка (он же ajax старой школы). Хотя он отлично работает с некоторыми библиотеками JS, включая почтенный jQuery, он не будет работать с современным встроенным в JS fetch().

Практика программирования на Python 3, лекция №5

Лекции о Python 3 от Тимофея Хирьянова при поддержке Московского физико-технического института. Лекция №5.

Практика программирования на Python 3, лекция №4

Лекции о Python 3 от Тимофея Хирьянова при поддержке Московского физико-технического института. Лекция №4.

Практика программирования на Python 3, лекция №3

Лекции о Python 3 от Тимофея Хирьянова при поддержке Московского физико-технического института. Лекция №3.

Практика программирования на Python 3, лекция №2

Лекции о Python 3 от Тимофея Хирьянова при поддержке Московского физико-технического института. Лекция №2.

Практика программирования на Python 3, лекция №1

Лекции о Python 3 от Тимофея Хирьянова при поддержке Московского физико-технического института. Лекция №1.

Как загрузить файлы с Django

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

Советы по написанию миграции данных в приложении Django

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