如何覆盖 Cement Framework 中的 Jinja2 扩展设置?
How to override Jinja2 extension settings in Cement Framework?
我是 Cement Framework 和 Python 的新用户。我尝试覆盖 jinja2 模板处理程序的默认配置以将 trim_blocks 设置为 True。我在扩展中看到了环境设置的默认值,但我真的很想知道在Cement中覆盖它的正确位置在哪里?
感谢您的帮助。
经过多次测试,我找到了覆盖 Jinja2 扩展 的方法。我希望这是一个很好的方法。
为了避免直接在命令中执行 class,我使用了 Cement hook "post_argument_parsing" .我在文件“main.py”的主 class 中定义了这个钩子,如下所示:
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),
]
我是 Cement Framework 和 Python 的新用户。我尝试覆盖 jinja2 模板处理程序的默认配置以将 trim_blocks 设置为 True。我在扩展中看到了环境设置的默认值,但我真的很想知道在Cement中覆盖它的正确位置在哪里?
感谢您的帮助。
经过多次测试,我找到了覆盖 Jinja2 扩展 的方法。我希望这是一个很好的方法。
为了避免直接在命令中执行 class,我使用了 Cement hook "post_argument_parsing" .我在文件“main.py”的主 class 中定义了这个钩子,如下所示:
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),
]