首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向金字塔下的jinja2添加自定义过滤器

向金字塔下的jinja2添加自定义过滤器
EN

Stack Overflow用户
提问于 2012-05-17 16:30:56
回答 2查看 3.4K关注 0票数 5

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

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

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

代码语言:javascript
运行
复制
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

这段代码应该放在哪里?

我尝试将它放在视图文件中,但显然不起作用。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-17 16:57:33

假设您使用的是pyramid_jinja2,那么您可以通过configurator实例使用pyramid_jinja2.get_jinja2_environment()来访问环境。

但是,显然您也可以在不直接访问环境的情况下使用register them via the pyramid config file

代码语言:javascript
运行
复制
[app:yourapp]
    # ... other stuff ...
    jinja2.filters =
        # ...
        getbitvalue = your_package.your_subpackage:GetBitValue
票数 11
EN

Stack Overflow用户

发布于 2016-01-28 00:56:51

为了完整性,这将是您在代码中注册过滤器的方式。

代码语言:javascript
运行
复制
# __init__.py
def main(global_config, **settings):
    #....
    config = Configurator(settings=settings)
    config.include('pyramid_jinja2')
    config.commit() # this is needed or you will get None back on the next line
    jinja2_env = config.get_jinja2_environment()
    jinja2_env.filters['getbitvalue'] = GetBitValue
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10632232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档