gpt4 book ai didi

jinja2 - 禁用某些过滤器的 Jinja 模板缓存

转载 作者:行者123 更新时间:2023-12-04 17:09:57 28 4
gpt4 key购买 nike

我们有一个自定义 Jinja 过滤器,用于为我们的 Javascript 和 CSS 资源创建缓存破坏 URL。我们现在注意到,在我们的生产环境中,最终编译的模板会被缓存。这会导致问题,因为我们的模板过滤器有时不会创建新的 URL(即当模板没有更改但 Javascript 更改时)。

有没有办法强制 Jinja 每次重新评估某个过滤器而不缓存结果?

编辑 1 :我们对过滤器使用常量输入(文件名)。

最佳答案

经过大量的谷歌搜索,我终于找到了真正的解决方案。 Jinja有一个特殊的 helper 叫contextfilter您可以使用它来装饰您的函数,使您的过滤器能够感知上下文(并且依赖于上下文)。 Jinja 字节码缓存不会缓存这个计算值,即使常量作为输入传递。

在 Python 中的过滤器中:

from jinja2 import contextfilter

@contextfilter
def asset_url(context, url):
return some_url_thing(url)

在您的模板中:

<link rel="stylesheet" href="{{ 'styles.css' | asset_url }}" />

关于jinja2 - 禁用某些过滤器的 Jinja 模板缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20654274/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com