我想在jinja2中使用django的人性化图书馆。 我按照django-jinja documentation
中的说明配置了我的设置INSTALLED_APPS = (
...
'django_jinja',
'django_jinja.contrib._humanize',
...
)
TEMPLATES = [
{
'BACKEND': 'django.template.backends.jinja2.Jinja2',
'APP_DIRS': True,
'OPTIONS': {
'extensions': DEFAULT_EXTENSIONS + [
...
],
...
},
},
]
USE_I18N = True
USE_L10N = True
LOCALE_PATHS = (
os.path.join(BASE_DIR, 'locale'),
)
gettext = lambda s: s
LANGUAGES = (
('nl', gettext('Dutch')),
('de', gettext('German')),
)
但是当我在我的一个Jinja2模板中使用{{ somevalue|intcomma }}
时,我收到错误:
django.template.exceptions.TemplateSyntaxError: ("no filter named 'intcomma'",)
这可能是什么原因?
答案 0 :(得分:0)
对此的一种解决方案是重写jinja2.py中的环境函数以包含intcomma(或Django随附的任何其他过滤器)。这不需要django-jinja。
from django.contrib.staticfiles.storage import staticfiles_storage
from django.urls import reverse
from jinja2 import Environment
from django.contrib.humanize.templatetags.humanize import intcomma
def environment(**options):
env.globals.update({
'static': staticfiles_storage.url,
'url': reverse,
'intcomma': intcomma,
})
return env
在模板中:
{{ intcomma(1000000) }}