Spec-Zone.ru › Django 2.1

Переопределение шаблонов

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

Если у вас есть директории шаблонов приложения и проекта, оба содержащие переопределения, по умолчанию загрузчик шаблонов Django будет пытаться загрузить шаблон из директории проекта в первую очередь. Другими словами, DIRS ищется перед APP_DIRS.

См. также

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

Переопределение из директории шаблонов проекта

Сначала мы рассмотрим переопределение шаблонов, создав шаблоны-замены в директории шаблонов вашего проекта.

Предположим, вы пытаетесь переопределить шаблоны для стороннего приложения под названием blog, которое предоставляет шаблоны blog/post.html и blog/list.html. Соответствующие настройки вашего проекта будут выглядеть следующим образом:

import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

INSTALLED_APPS = [
    ...,
    'blog',
    ...,
]

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        ...
    },
]

Настройка TEMPLATES и BASE_DIR уже будут существовать, если вы создали свой проект с использованием шаблона проекта по умолчанию. Настройка, которую нужно изменить, это DIRS.

Эти настройки предполагают, что у вас есть директория templates в корне вашего проекта. Чтобы переопределить шаблоны для приложения blog, создайте папку в директории templates и добавьте в нее файлы шаблонов:

templates/
    blog/
        list.html
        post.html

Загрузчик шаблонов сначала ищет шаблоны в директории DIRS. Когда представления в приложении blog запрашивают шаблоны blog/post.html и blog/list.html, загрузчик вернет файлы, которые вы только что создали.

Переопределение из директории шаблонов приложения

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

Сначала убедитесь, что ваши настройки шаблонов проверяют внутри директорий приложений:

TEMPLATES = [
    {
        ...,
        'APP_DIRS': True,
        ...
    },
]

Если вы хотите поместить переопределения шаблонов в приложение под названием myapp и шаблоны для переопределения называются blog/list.html и blog/post.html, структура вашей директории будет выглядеть так:

myapp/
    templates/
        blog/
            list.html
            post.html

При установке APP_DIRS на True, загрузчик шаблонов будет искать шаблоны в директории шаблонов приложения и найдёт их.

© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/2.1/howto/overriding-templates/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API