カスタム関数を作成して、それをトルネード テンプレートにうまく渡したいです。
def trimString(data): return data[0:20]
次に、これをトルネード ファイルにプッシュします。これにより、文字列をトリミングできるようになります。
これは可能ですか?
ありがとう。
ドキュメントでは特に明確ではありませんが、モジュールでこの関数を定義し、モジュールを引数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のソリューションも機能しますが、すべてのテンプレートでこのような機能に自動的にアクセスできると便利なことがよくあります。
次のように、関数をテンプレート変数として渡すこともできます。
template_vars['mesage'] = 'hello'
template_vars['function'] = my_function # Note: No ()
self.render('home.html',
**template_vars
)
次に、テンプレートで次のように呼び出します。
{{ my_function('some string') }}