tornado template调用后台 自定义python 函数

三种方法

1。defining this function in a module and passing the module to tornado.web.Application as the ui_methods argument.

in ui_methods.py:

 

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

 

in app.py:

import tornado.ioloop
import tornado.web

import ui_methods

classMainHandler(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()

  

in main.html:

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

 

 

2。pass the function in as a template variable

 template_vars['mesage']='hello'
 template_vars['function']= my_function # Note: No ()
        self.render('home.html',**template_vars
        )

 

 

Then in your template you call it like this:

 

{% my_function('some string')%}

 

3。import functions in Tornado. I think this is the cleanest solution. At the top of your template simply do the following:

{%import lib %}

 

later you can do

{{ trim_string(data)}}

 

你可能感兴趣的:(template)