3

我正在尝试设置 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 集成的提示也值得赞赏。

4

1 回答 1

2

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

import Cheetah.ImportHooks 
Cheetah.ImportHooks.install() 

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

这在主要文档中没有记录,但 Tavis Rudd 在回答Cheetah mailing list上的类似问题时提出了这个建议。

于 2012-03-13T20:46:29.363 回答