django-jinja:找不到intcomma过滤器

时间:2017-09-05 16:07:45

标签: django jinja2

我想在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'",)

这可能是什么原因?

1 个答案:

答案 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) }}