python - 如何覆盖水泥框架中的 Jinja2 扩展设置?
问题描述
我是Cement Framework和 Python 的新用户。我尝试覆盖 jinja2 模板处理程序的默认配置以将 trim_blocks 设置为 True。我在扩展中看到 Environment 设置的默认值,但我真的想知道在Cement中覆盖它的正确位置在哪里?
谢谢您的帮助。
解决方案
经过多次测试,我找到了一种覆盖 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),
]
推荐阅读
- php - 用选择的变化选项价格替换可变 GravityFroms 价格范围
- mysql - 将从json值中提取的字符串转换为返回NULL的日期
- c# - WPF填充DataGrid
- python - 关于在python中使用正则表达式的字符串问题
- java - 如何从现有的 c 项目(协和)为 JNI 创建 .dylib
- python - Django Rest Framework 序列化错误:类型类型的对象不是 JSON 可序列化的
- java - Spring Boot @ExceptionHandler 在开发服务器上工作但不在本地
- android - 使用 Amazon S3 TransferUtility 文件作为 Fresco 的图像源
- oracle - Oracle实体框架代码第一个日期时间生成为日期而不是时间戳
- security - 如何使用密码对 .p12 进行字典攻击(教育目的)