为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

宝慕林4294392 2022-01-18 21:26:31
我想添加一些自定义模板标签。但是,{% load userfilters %} => 'load' 标签不起作用。settings.py# project/settings.pyTEMPLATES = [    {        '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.pyfrom django.templatetags.static import staticfrom django.urls import reversefrom jinja2 import Environmentdef environment(**options):    env = Environment(**options)    env.globals.update({        'static': static,        'url': reverse,    })    return env应用程序/模板标签/userfilters.pyfrom django import templateregister = template.Library()@register.filter(name='a')def a(value):    return 1views.py# use django-rest-frameworkclass IndexView(generics.GenericAPIView):    renderer_classes = [TemplateHTMLRenderer]    template_name = 'index.html'    def get(self, request, *args, **kwargs):        return Response({'name': 'max'})演示.html不管用{% load userfilters %}<!-- custom filter -->{{ name|a }}是工作<!-- default filter -->{{ name|title }}我希望能解决这个问题。
查看完整描述

1 回答

?
Helenr

TA贡献1780条经验 获得超4个赞

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开箱即用的样式加载。


查看完整回答
反对 回复 2022-01-18
  • 1 回答
  • 0 关注
  • 169 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号