Django的自定义模板语言

时间:2011-06-09 07:55:00

标签: django django-templates haml

我想在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'标签来解决。

但我想知道是否可以用不同的方式完成。

1 个答案:

答案 0 :(得分:2)

Write a template loader并将其放入您的设置中。