Использовать пользовательский каталог для «templatetags»

#django #django-1.7

#django #django-1.7

Вопрос:

кто-нибудь знает, может ли он использовать пользовательский каталог для «templatetags» eje: «my-project/templatetags»

 Normal
My-Project-Name
  My-App
    __init__.py
      templatetags
        __init__.py
  

Нужны такие

 My-Project-Name
  templatetags
    __init__.py
  

Ответ №1:

Это возможно. Просто добавьте местоположение вашего templatetags.py каталога или каталога templatetags в Django settings.py в OPTIONS настройках ШАБЛОНОВ.

В моем случае я помещаю свои templatetags в libs/ каталог, который находится в корневом каталоге проекта.
У вас есть два варианта, builtins или libraries :

 TEMPLATES = [{
    ...
    'OPTIONS': {
        ...
        'builtins': [
            'libs.templatetags'
        ],
        # or as @x-yuri pointed out, you can put them in `libraries`
        'libraries': {
            'my_tags': 'libs.templatetags',
        },
    }
}]
  

Если вы используете builtins , он доступен везде, и вам не нужно использовать {% load %} для этого.
Если вы используете, libraries вам нужно использовать {% load my_tags %} .

Комментарии:

1. Также есть libraries опция для тех, которые будут загружаться по требованию.

Ответ №2:

Это невозможно. Причина в том, что он templatetags должен находиться внутри приложения django.

Из документации templatetags :

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

Приложение должно содержать каталог templatetags на том же уровне, что и models.py , views.py и т.д. Если он еще не существует, создайте его — не забудьте __init__.py файл, чтобы убедиться, что каталог обрабатывается как пакет Python. После добавления этого модуля вам нужно будет перезапустить ваш сервер, прежде чем вы сможете использовать теги или фильтры в шаблонах.

Комментарии:

1. но приложение Django показывает, что его можно использовать в корне проекта, django/templatetags/cache.py и попытался добавить templatetags в INSTALLED_APPS..

2. Он не находится на корневом уровне. Именно в django/django/templatetags/ котором находится app — См. Источник: github.com/django/django/tree/master/django/templatetags