在 Django 中使用带有 jinja2 的简易缩略图(或其他第 3 方库)
Using easy-thumbnails (or other 3rd party library) with jinja2 in Django
在 Django 的 Jinja2 中使用像 easy-thumbnails 这样的第三方过滤器的过程是怎样的?我需要以某种方式注册我需要使用的过滤器吗?具体来说,我想使用我以前使用的 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'",)
您需要将过滤器添加到您的 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 模板。
更好的实现方式是编写您自己的函数来包装在 easy-thumbnails 中实现的功能,并将这些函数用作您的 Jinja2 过滤器。
在 Django 的 Jinja2 中使用像 easy-thumbnails 这样的第三方过滤器的过程是怎样的?我需要以某种方式注册我需要使用的过滤器吗?具体来说,我想使用我以前使用的 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'",)
您需要将过滤器添加到您的 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 模板。
更好的实现方式是编写您自己的函数来包装在 easy-thumbnails 中实现的功能,并将这些函数用作您的 Jinja2 过滤器。