我正在尝试设置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集成的提示也不胜感激。
答案 0 :(得分:2)
在流程启动早期的某些地方,包括以下两行:
import Cheetah.ImportHooks
Cheetah.ImportHooks.install()
我相信这会给你你正在寻找的行为。
主要文档中没有记录这一点,但是Tavis Rudd在回应Cheetah mailing list上的类似问题时建议这样做。