1.ui_modules和ui_methods
第一步:新建文件uimethods.py ,这里的文件名是随意的只要在import时合法就行
def methods1(self): #注意这里要加上self
return 'ui_methods 1'
def methods2(self):
return 'ui_methods 2'
新建文件uimodules.py,使用ui_modules需要继承UIModule类
from tornado.web import UIModule
class UiModule(UIModule):
def render(self, *args, **kwargs):
return '我是ui_module'
第二步:在项目中导入
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语句调用
<!--调用ui_modules-->
{% module UiModule() %}<br>
<br>
<!--调用ui_methodes-->
{{ methods1() }}
ui_modules和ui_methods提高了方法和类的复用性,可以在全局使用。
最后只需要在需要的页面添加如下代码就行
{% module Advertisement() %}<br>
最后在模板还提供了一些其他的功能
set设置局部变量
<!--通过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%}为止
{% apply upper %}
hello world<br>
hahaha
{% end %}
{{ upper('hahaha') }} <br>
linkify生成一个链接
{{ linkify('百度: http://www.baidu.com') }} <br>
{%raw linkify('百度: http://www.baidu.com') %}
2.附录
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()
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。