4

カスタム関数を作成して、それをトルネード テンプレートにうまく渡したいです。

def trimString(data): return data[0:20]次に、これをトルネード ファイルにプッシュします。これにより、文字列をトリミングできるようになります。

これは可能ですか?

ありがとう。

4

3 に答える 3

13

ドキュメントでは特に明確ではありませんが、モジュールでこの関数を定義し、モジュールを引数tornado.web.Applicationとしてに渡すことで、これを簡単に行うことができます。ui_methods

IE:

ui_methods.py:

def trim_string(data):
    return data[0:20]

app.pyで:

import tornado.ioloop
import tornado.web

import ui_methods

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.render("main.html")


urls = [(r"/", MainHandler)]
application = tornado.web.Application(urls, ui_methods=ui_methods)

if __name__ == "__main__":
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()

main.html内:

....
{{ trim_string('a string that is too long............') }}
....

Andy Bootのソリューションも機能しますが、すべてのテンプレートでこのような機能に自動的にアクセスできると便利なことがよくあります。

于 2012-10-21T23:58:50.867 に答える
5

次のように、関数をテンプレート変数として渡すこともできます。

 template_vars['mesage'] = 'hello'
 template_vars['function'] = my_function # Note: No ()

        self.render('home.html',
            **template_vars
        )

次に、テンプレートで次のように呼び出します。

 {{ my_function('some string') }}
于 2012-10-22T15:58:13.163 に答える