遇到未知标签“加载”。?

Posted

技术标签:

【中文标题】遇到未知标签“加载”。?【英文标题】:Encountered unknown tag 'load'.? 【发布时间】:2019-09-12 07:48:03 【问题描述】:

我想添加一些自定义模板标签。但是,% load userfilters % => 'load' 标签不起作用。

    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】:

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后端;更有特色一点,supports templatetags style loading out of the box.

【讨论】:

以上是关于遇到未知标签“加载”。?的主要内容,如果未能解决你的问题,请参考以下文章

图像识别遇到未知物体怎么办?

Python RandomForest - 未知标签错误

js兼容ie8-未知的运行时错误

将二进制文件加载到未知结构类型

未知初始化器:加载 Keras 模型时的 GlorotUniform

visual studio 调试时遇到 System.BadImageFormatException