我想编写一个自定义函数并将其传递给我的龙卷风模板。
与def trimString(data): return data[0:20]
一样,然后将其推入我的龙卷风文件中。
这应该允许我修剪字符串。
这可能吗?
感谢。
答案 0 :(得分:13)
它不是especially clear in the documentation,但您可以通过在模块中定义此函数并将模块作为tornado.web.Application
参数传递给ui_methods
来轻松完成此操作。
予。 E:
在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的解决方案也有效,但在每个模板中都可以自动访问这样的功能。
答案 1 :(得分:5)
您也可以将函数作为模板变量传递,如下所示:
template_vars['mesage'] = 'hello'
template_vars['function'] = my_function # Note: No ()
self.render('home.html',
**template_vars
)
然后在你的模板中你这样称呼它:
{{ my_function('some string') }}
答案 2 :(得分:5)
您可以在Tornado中导入功能。我认为这是最干净的解决方案。 在模板的顶部,只需执行以下操作:
{% import lib %}
以后你可以做
{{ trim_string(data)}}