遇到未知标签“加载”。?
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.
【讨论】:
以上是关于遇到未知标签“加载”。?的主要内容,如果未能解决你的问题,请参考以下文章