Jinja2 - 过滤器无法在后续页面重新加载时进行渲染(在Flask中)

时间:2016-11-28 22:23:54

标签: python templates flask jinja2

我花了几个小时试图解决这个问题,但未成功。 我只想在jinja2 filter应用中注册Flask,但无论出于何种原因,filter仅在服务器启动后的第一页加载时起作用。在所有后续请求中,过滤器将无法按预期呈现。

这就是我所拥有的:

    帮助class中的
  • 我有一个简单的static method,可以生成HTML data属性中使用的令牌:

    @staticmethod
    def anti_cache_token(switch):
        if switch:
            return time.time()
        else:
            return None
    
  • 在我实例化Flask应用的文件中我将此方法注册为filter中的jinja_env

    app.jinja_env.filters['anti_cache_token'] = Helpers.anti_cache_token
    
  • 最后,我在我的filter中拨打template,如下所示:

    {{ true | anti_cache_token }}
    

这是结果:

  • 第一次运行Flask内置server时,过滤器会正确呈现time.time()结果。
  • 我重新加载页面后,或在另一个浏览器中打开它,结果保持不变,尽管它应该改变。的(?)

这是我第一次使用jinja2而我在这里显然遗漏了一些东西。我真的很感谢你对这个的帮助。

编辑:

This answer is helpful了解为什么会这样。但是,我的问题是如何防止缓存发生。

@davidsm请您分享一下如何克服这个问题的想法?你没有经过证实的答案就赶紧关闭它......

替代答案:

对于仍然需要帮助的人,您可以在此处找到可能的解决方案:https://stackoverflow.com/a/39968378/5252007

0 个答案:

没有答案