1

在 Django 中使用带有 Jinja2 的简易缩略图等第三方过滤器的过程是什么?我是否需要以某种方式注册我需要使用的过滤器?具体来说,我想使用thumbnail_url我曾经使用过的过滤器,例如:

<img src="{{ the_thing.image|thumbnail_url:'homepage_large' }}">

我尝试将其转换为 Jijnja2 语法,如下所示:

{{ the_thing.image|thumbnail_url('homepage_large') }}

但得到以下错误:

django.template.base.TemplateSyntaxError: ("no filter named 'thumbnail_url'",)
4

1 回答 1

1

您需要将过滤器添加到您的 Jinja2 环境中:

def environment(**options):
    env = Environment(**options)
    env.globals.update(**{
        'static': staticfiles_storage.url,
        'url': reverse,
    })

    # add easy-thumbnails function as a Jinja2 filter
    from easy_thumbnails.templatetags.thumbnail import thumbnail_url
    env.filters.update(**{
        'thumbnail_url': thumbnail_url,
    })

    return env

您应该知道,easy-thumbnails 中的模板标签是为 Django 模板构建的。然而,在这个非常特殊的情况下,该thumbnail_url函数恰好也适用于 Jinja2 模板。

更好的实现是编写自己的函数来包装在简单缩略图中实现的功能,并将这些函数用作您的 Jinja2 过滤器。

于 2016-02-26T00:27:44.627 回答