私はチェリーピーをいじり始めたばかりで、チーターをテンプレートエンジンとして使いたいと思っていました。
したがって、注釈機能を使用してテンプレートを指すことができるようにツールを作成したかったのです。
何かのようなもの
import cherrypy
class Root(object):
@cherrypy.expose()
@cherrypy.tools.cheetah(template="index")
def index(self):
title = "Demo"
content = "Stuff"
return {'title': title, 'content': content}
コンパイルされたテンプレートで動作するものをcherrypywikiですでに見つけました:
しかし、私は最初にテンプレートをコンパイルしたくありません。公開したサイトからコンテンツを返却したい。私のチーターツールは、そのコンテンツをインターセプトしてテンプレートを作成する必要があります
テンプレートを作成する方法を知っています。
from Cheetah.Template import Template
....
cherrypy.expose()
def demo(self):
filename = os.path.join(APPDIR, "index.tmpl")
template = Template(file = filename)
template.content = "bla"
template.title = "Test"
return str(template)
....
基本的に、ページハンドラーでコンテンツの辞書を返すだけで、ツールがテンプレートを作成し、属性を動的に入力します。私はPythonも初めてなので、これを動的に行う方法がわかりません。
辞書を繰り返し処理して、ツール内でそのようなことを実行できることを望んでいました。
template = Template(file = filename)
for key, value in data:
setattr(template, key, value)
しかし、私はすでに短いデモでこれを試しました。setattr
動かない。私はこのようにそれを試しました:
template = Template(file = filename)
for key, value in data:
setattr(template, 'title', 'Test')
誰かが私を正しい方向に向けてくれませんか?