Python 如何在jinja2中禁用筛选结果的缓存

Python 如何在jinja2中禁用筛选结果的缓存,python,pyramid,jinja2,Python,Pyramid,Jinja2,我们正在开发一个Pyramid(通过Pyramid_Jinja2使用Jinja2模板)应用程序,该应用程序为用户提供其唯一的子域,并提供一种稍后将此子域更改为任何其他可用子域的方法 例如,您可以转到sub.example.com/settings并将您的子域更改为“dub”。提交此更改后,您将被重定向到dub.example.com/settings 我们对此设置有一个问题-因为我们的子域存储在请求对象中,并且我们对每个基于子域的视图都有自定义的预生成器-当我们在sub.example.com上

我们正在开发一个Pyramid(通过Pyramid_Jinja2使用Jinja2模板)应用程序,该应用程序为用户提供其唯一的子域,并提供一种稍后将此子域更改为任何其他可用子域的方法

例如,您可以转到sub.example.com/settings并将您的子域更改为“dub”。提交此更改后,您将被重定向到dub.example.com/settings

我们对此设置有一个问题-因为我们的子域存储在请求对象中,并且我们对每个基于子域的视图都有自定义的预生成器-当我们在sub.example.com上调用route_url时-结果似乎被缓存,并且在我们更改子域时生成相同的url。例如,在子域更改之后(直到我们重新启动应用程序),我们位于地址为dub.example.com的站点上,但一些链接(某些形式的菜单,“操作”目标)的url中仍然有“sub.example.com”,因为此url是在子域更改之前生成的

我很难找到生成的url缓存在什么级别,总之,我不知道如何避免它。禁用url生成的缓存并不是那么完美(尽管直到现在我才知道这是一件“事情”)


您认为解决此类问题的最佳方法是什么?

我花了一些时间调试此问题,但为pyramid_jinja2创建了一个补丁。看

过滤器的计算结果为const(函数为jinja2的nodes.py中的_const),导致过滤器只执行一次