首页 > 解决方案 > 如何覆盖水泥框架中的 Jinja2 扩展设置?

问题描述

我是Cement Framework和 Python 的新用户。我尝试覆盖 jinja2 模板处理程序的默认配置以将 trim_blocks 设置为 True。我在扩展中看到 Environment 设置的默认值,但我真的想知道在Cement中覆盖它的正确位置在哪里?

谢谢您的帮助。

标签: pythonjinja2cement

解决方案


经过多次测试,我找到了一种覆盖 Jinja2 扩展的方法。我希望这是一个很好的方法。

为避免直接在命令类中执行此操作,我使用了 Cement 挂钩post_argument_parsing ”。我在文件“main.py”的主类中定义了这个钩子,如下所示:

def jinja2_settings_override(self):
   # Jinja2 Environment context
   env = self.output.templater.env
   env.trim_blocks = True

class MyCommandClass(App):
    """Primary application."""

    class Meta:
        label = 'my_command'

        # ... #

        # register the hook to override jinja2 extension settings.
        hooks = [
            ('post_argument_parsing', jinja2_settings_override),
        ]

推荐阅读