2

私はチェリーピーをいじり始めたばかりで、チーターをテンプレートエンジンとして使いたいと思っていました。

したがって、注釈機能を使用してテンプレートを指すことができるようにツールを作成したかったのです。

何かのようなもの

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ですでに見つけました:

CherryPyチータツール

しかし、私は最初にテンプレートをコンパイルしたくありません。公開したサイトからコンテンツを返却したい。私のチーターツールは、そのコンテンツをインターセプトしてテンプレートを作成する必要があります

テンプレートを作成する方法を知っています。

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

誰かが私を正しい方向に向けてくれませんか?

4

0 に答える 0