2012-02-08 9 views
3

私はCheetahテンプレートの動的コンパイルを設定しようとしています。これは開発に便利です(変更するたびにcheetah compileで再コンパイルする必要はありません)。 Cheetah.Template.Templateが正しいAPIだと思われますが、それは単に親テンプレートを処理しません。親テンプレートの自動コンパイル

だから私は持っている場合:

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

私はルートディレクトリにはPythonを実行する場合、私は次を取得したい:私はcheetah compileA.tmplをコンパイルする場合

>>> 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 

、エラーが消え、その変更テンプレートに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の統合に関するヒントもありがとうございます。早期ごプロセスの起動中に、次の2行を含め

答えて

2

一部:

import Cheetah.ImportHooks 
Cheetah.ImportHooks.install() 

は、私は、これはあなたが探している動作を与えると確信しています。

これはメインドキュメントには記載されていませんが、Tavis RuddはCheetah mailing listに関する同様の質問に対してこれを提案しました。

+0

うわー、これは最高です!スレッドへのリンクありがとう。 –

関連する問題