自动编译父模板

时间:2012-02-08 20:43:50

标签: python templates cheetah

我正在尝试设置Cheetah模板的动态编译,这对开发很有用(所以我不必在每次更改后用cheetah compile重新编译它们)。似乎Cheetah.Template.Template是正确的API,但它根本不处理父模板。

所以,如果我有:

 -- __init__.py
 -- index.tmpl:
    #extends layout.A
 -- layout/
          -- __init__.py
          -- A.tmpl:
          #echo 'Hello!'

如果我在根目录中运行Python,我会得到下一个:

>>> from Cheetah.Template import Template; t = Template(file='index.tmpl')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.6/site-packages/Cheetah-2.4.3-py2.6-freebsd-7-amd64.egg/Cheetah/Template.py", line 1259, in __init__
    self._compile(source, file, compilerSettings=compilerSettings)
  ...
  ImportError: No module named A

如果我使用A.tmpl编译cheetah compile,则错误消失,但模板中的更改不会影响index.tmpl编译的结果:

$ cat layout/A.tmpl
#echo 'Hello, world!'

$ python
>>> from Cheetah.Template import Template; t = Template(file='index.tmpl')
>>> str(t)
'Hello!'

我应该自己重新编译所有父模板(例如像Aquarium框架那样)吗?

猎豹版2.4。

任何有关Django1.3 \ Cheetah集成的提示也不胜感激。

1 个答案:

答案 0 :(得分:2)

在流程启动早期的某些地方,包括以下两行:

import Cheetah.ImportHooks 
Cheetah.ImportHooks.install() 

我相信这会给你你正在寻找的行为。

主要文档中没有记录这一点,但是Tavis Rudd在回应Cheetah mailing list上的类似问题时建议这样做。