我想在Django中使用不同的模板语言。它实际上是HamlPy,它是一种受HAML启发的语言,直接转换为Django模板。 因此,我可以做类似
的事情from hamlpy import Compiler
compiler = Compiler()
django_template_string = compiler.process(hamlpy_template_string)
请注意,它不需要任何上下文 - 它只是模板文本预处理。生成的文本可以正常方式用作Django模板。
所以,我想将这段代码包装在一些deus-ex-machina代码中,这些代码将优雅地干预模板加载并在Django尝试渲染甚至解析之前对其进行预处理。
从我看到的,如果我可以重载Parser
类并执行
def parse(str):
str = preprocess(str)
super().parse(str)
这将是最透明的解决方案。
我了解自定义标签和过滤器。我意识到我的任务可以用“全局”`preprocess_hamlpy'标签来解决。
但我想知道是否可以用不同的方式完成。