Джанго: TEMPLATE_DIRS против INSTALLED_APPS - PullRequest
3 голосов
/ 02 октября 2010

В настоящее время я просто добавляю приложение в INSTALLED_APPS, чтобы иметь возможность использовать шаблоны из этого приложения, но есть также настройка TEMPLATE_DIRS. Когда я должен предпочесть TEMPLATE_DIRS, а не INSTALLED_APPS?

Ответы [ 2 ]

7 голосов
/ 02 октября 2010

Вы можете использовать шаблоны в TEMPLATE_DIRS либо для переопределения шаблонов, приходящих из приложений (давая им одно и то же имя), либо для шаблонов, которые актуальны для нескольких приложений (на ум приходит base.html).

Это работает из-за порядка, в котором загрузчики шаблонов установлены в TEMPLATE_LOADERS (файловая система до app_directories).

Хорошая идея - организовать ваши шаблоны следующим образом, чтобы избежать конфликтов имен:

<project>/
    <app1>/templates/<app1>/
        foo.html
        bar.html
    <app2>/templates/<app2>/
        foo.html
    templates/
        <app1>/
            foo.html
        base.html
        xyzzy.html
0 голосов
/ 26 апреля 2013

Вам также нужно определить этот TEMPLATE_DIRS для переопределения шаблонов внешних модулей.

Если папка вашего шаблона расположена как hop , рекомендованная в предыдущем ответе, вы можете определить TEMPLATE_DIRS таким образом, чтобы сделать его более переносимым:

import os

cwd = os.path.dirname(os.path.abspath(__file__))
PROJECT_ROOT = cwd[:-9]

# other code comes here ...

TEMPLATE_DIRS = (
    os.path.join(PROJECT_ROOT, "templates"),
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...