2011-06-09 183 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