簡體   English   中英

在Django中對jinja2使用easy-thumbnails(或其他第3方庫)

[英]Using easy-thumbnails (or other 3rd party library) with jinja2 in Django

在Django中將第三方過濾器(如easy-thumbnails)與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'",)

您需要將過濾器添加到您的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

您應該知道,易用縮略圖中的模板標記是為Django模板構建的。 但是,在這種非常特殊的情況下, thumbnail_url函數也恰好與Jinja2模板一起使用。

更好的實現方式是編寫您自己的函數,以將實現的功能包裝在簡單的縮略圖中,並將這些函數用作Jinja2過濾器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM