第一步:新建文件uimethods.py ,這裏的文件名是隨意的只要在import時合法就行html
def methods1(self): #注意這裏要加上self return 'ui_methods 1' def methods2(self): return 'ui_methods 2'
新建文件uimodules.py,使用ui_modules須要繼承UIModule類web
from tornado.web import UIModule class UiModule(UIModule): def render(self, *args, **kwargs): return '我是ui_module'
第二步:在項目中導入app
import util.uimethods import util.uimodules
第三步:在application配置參數,值是導入的模塊名函數
ui_methods=util.uimethods, ui_modules=util.uimodules, #也能夠寫成字典的形式,其實在tornado內部就是解析成字典的形式 ui_modules={'UiModule':util.uimodules.UiModule}, class Calculation: def sum(self,a,b): return a+b class UiHandler(tornado.web.RequestHandler): def fun(self): return 'hujing' def get(self): username = 'haha' self.render('module.html', username=username, fun=self.fun, cal=Calculation )
第四步:在HTML中調用,導入的ui_modules須要使用module語句調用tornado
<!--調用ui_modules--> {% module UiModule() %}<br> <br> <!--調用ui_methodes--> {{ methods1() }}
ui_modules和ui_methods提升了方法和類的複用性,能夠在全局使用。oop
最後只須要在須要的頁面添加以下代碼就行ui
{% module Advertisement() %}<br>
最後在模板還提供了一些其餘的功能url
set設置局部變量spa
<!--經過set設置局部變量--> {% set su = Count().sum %} {{ su(6,9) }} <br> {% set args = Count().args %} {% for a in args(1,2,3,4,5) %} {{ a }}<br> {% end %}
使用apply語句,使用函數的做用範圍到最近的{%end%}爲止debug
{% apply upper %} hello world<br> hahaha {% end %} {{ upper('hahaha') }} <br>
linkify生成一個連接
{{ linkify('百度: http://www.baidu.com') }} <br> {%raw linkify('百度: http://www.baidu.com') %}
module.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Module</title> </head> <body> {{ username }}<br> {{ fun() }}<br> {{ cal().sum(6,9) }}<br> {% import time %} {{ time.time() }}<br> {% from util.mode_file import sub,upper,Count %} {{ sub(5,3) }}<br> {{ upper('wenmang') }}<br> {{ Count().url }}<br> {% raw Count().url %}<br> {{ Count().sum(6,9) }}<br> {{ Count.sum(6,9) }}<br> {{ Count().args(1,2,3,4) }}<br> {{ methods1() }}<br> {% module UiModule() %}<br> <!--經過set設置局部變量--> {% set su = Count().sum %} {{ su(6,9)}} {% set args = Count().args %} {% for a in args(1,2,3,4,5)%} {{ a }}<br> {% end %} {% apply upper %} <br> ren hao e <br> xieyulong bu e {% end %} <br> {{ upper('hahaha') }} <br> {{ linkify('百度:http://www.baidu.com') }} <br> {% raw linkify('百度:http://www.baidu.com') %} <br> </body> </html>
uimodules.py
from tornado.web import UIModule class UiModule(UIModule): def render(self, *args, **kwargs): return '我是 ui_module'
uimethods.py
def methods1(self): return 'ui_methods1' def methods2(self): return 'ui_methods2'
start1.py
import tornado.httpserver import tornado.ioloop import tornado.options import tornado.web import util.uimodules import util.uimethod from tornado.options import define,options define('port',default=9000,help='run port',type=int) class Calculation: def sum(self,a,b): return a+b class UiHandler(tornado.web.RequestHandler): def fun(self): return 'hujing' def get(self): username = 'haha' self.render('module.html', username=username, fun=self.fun, cal=Calculation ) if __name__ == '__main__': tornado.options.parse_command_line() app = tornado.web.Application( handlers=[ (r'/ui',UiHandler), ], template_path='templates', static_path='static', ui_methods=util.uimethod, ui_modules=util.uimodules, # ui_modules={'UiModule':util.uimodules.UiModule}, debug=True, ) http_server = tornado.httpserver.HTTPServer(app) http_server.listen(options.port) tornado.ioloop.IOLoop.instance().start()