Обнаружен неизвестный тег 'load'.? - PullRequest
0 голосов
/ 23 апреля 2019

Я хочу добавить несколько пользовательских тегов-шаблонов. Но, тег {% load userfilters%} => load 'не работает.

  1. settings.py
# project/settings.py
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.jinja2.Jinja2',
        'DIRS': [
            os.path.join(BASE_DIR, 'html/jinja2'),
        ],
        'APP_DIRS': True,
        'OPTIONS': {
            'environment': 'accountv1.jinja2.environment',
        },
    },
]
jinja2.py
# project/jinja2.py
from django.templatetags.static import static
from django.urls import reverse

from jinja2 import Environment


def environment(**options):
    env = Environment(**options)
    env.globals.update({
        'static': static,
        'url': reverse,
    })
    return env
app / templatetags / userfilters.py
from django import template

register = template.Library()


@register.filter(name='a')
def a(value):
    return 1
views.py
# use django-rest-framework
class IndexView(generics.GenericAPIView):
    renderer_classes = [TemplateHTMLRenderer]
    template_name = 'index.html'

    def get(self, request, *args, **kwargs):
        return Response({'name': 'max'})

demo.html

  • не работает
{% load userfilters %}
<!-- custom filter -->
{{ name|a }}
  • работает
<!-- default filter -->
{{ name|title }}

Я надеюсь решить эту проблему.

1 Ответ

2 голосов
/ 23 апреля 2019

В Jinja2 нет тега load, и фильтры тоже работают немного по-другому (они просто функции).

templatetags/*.py - это соглашение о шаблонах Django, и Jinja2 их не используетна всех.

Вы захотите зарегистрировать свои фильтры там, где вы настраиваете свою среду:

def environment(**options):
    env = Environment(**options)
    env.globals.update({
        'static': static,
        'url': reverse,
    })
    env.filters.update({
        'a': a,
    })
    return env

Другой вариант - использовать бэкэнд шаблона django-jinjaвместо встроенного в Django бэкэнда Jinja2;это немного более функционально и поддерживает загрузку стиля templatetags из коробки .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...