Spec-Zone.ru › Django 1.11

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

В вашем проекте вам может потребоваться переопределить шаблон в другом приложении 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/1.11/howto/overriding-templates/

Spec-Zone.ru

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