已经向before询问了这个问题,但是被接受的解决方案(由问题发布者本人给出)说,我们可以直接将新的过滤器添加到jinja2.filter.FILTER中。

但是在jinja2 documentation中,建议将过滤器添加到环境中。

我正在 Pyramid 下开发一个应用程序,需要定义我的自定义过滤器并执行以下操作。

from jinja2 import Environment

#Define a new filter
def GetBitValue(num,place):
    y = (num >> (place-1)) & 1
    return y

env = Environment()
env.filters['getbitvalue'] = GetBitValue

该代码片段应放在何处?

我尝试将其放置在views文件中,但这显然行不通。

如果我将其放置在__init__.py中,如何确保jinja2将其拾取?我的意思是我该如何将env发回 Pyramid 下的jinja2设置?

最佳答案

假设您正在使用 pyramid_jinja2 ,则可以通过pyramid_jinja2.get_jinja2_environment()实例使用configurator来访问环境。

但是,显然您也可以register them via the pyramid config file而不直接访问env:

[app:yourapp]
    # ... other stuff ...
    jinja2.filters =
        # ...
        getbitvalue = your_package.your_subpackage:GetBitValue

关于python - 在 Pyramid 下的jinja2中添加自定义过滤器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10632232/

10-11 22:04
查看更多