2011-06-09 99 views
1

我想在Django中使用不同的模板语言。它实际上是HamlPy,它是一种HAML启发式语言,可直接转换为Django模板。 因此,我可以这样做Django自定义模板语言

from hamlpy import Compiler 
compiler = Compiler() 
django_template_string = compiler.process(hamlpy_template_string) 

请注意,它不需要任何上下文 - 它只是模板文本预处理。生成的文本可以以正常方式用作Django模板。

所以,我想包装内即会摆好intervent模板装载和预处理它的Django之前试图渲染,甚至解析它的一些杀出-EX-MACHINA代码此代码。

从我所看到的,如果我能重载Parser类,做

def parse(str): 
    str = preprocess(str) 
    super().parse(str) 

这将是最透明的解决方案。

我知道自定义标签和过滤器。我意识到我的任务可以通过“global”`preprocess_hamlpy'标签来解决。

但我不知道它是否能够以不同的方式来完成。

回答

2

Write a template loader,并把它放在你的设置。

+0

肯定的,这是很有意义的,但限制了用户能够伸出一种类型的模板装载(或需要多个相同的拷贝)。这是推荐的方式吗? – Guard 2011-06-09 08:00:46

+0

我的意思是,我可以从FSLoader和预处理它的发现之后,该文件继承,但后来我将需要复制它AppDirsLoader – Guard 2011-06-09 08:01:30

+0

您可以编写一个封装了装载机。 – 2011-06-09 08:03:28