我花了几个小时试图解决这个问题,但未成功。
我只想在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