首先搞出一个tornado的hello_world,
新建test.py , tem.html , 代码如下:
test.py
import tornado.web
import tornado.ioloop
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.render("tem.html")
application = tornado.web.Application([
(r'/' , MainHandler),
])
if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
tem.html
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
head>
<body>
hello_world
body>
html>
———————————–分割线———————————–
然后需要改造这个demo,使用ui_methods , ui_modules 。
先介绍一下:
ui_methods自定义方法函数. 作为一个通用的方法在模板里使用.
ui_modules自定义一个组件,在模板里使用
接下来我们为demo添加ui_methods , ui_modules。
新建uimethod.py , 在这个文件中定义一个方法
uimethod.py
def say_hello(self , arg):
return 'hello' + arg
修改test.py文件
导入我们上面写的uimehod ,给render传递一个参数name为Lili ,在settings中添加”ui_methods”
test.py
import tornado.web
import tornado.ioloop
import uimethod
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.render("tem.html" , name = "Lili")
settings = {
"ui_methods" : uimethod ,
}
application = tornado.web.Application([
(r'/' , MainHandler),
] , **settings)
if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
修改tem.html文件,使用ui_methods:
tem.html
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
head>
<body>
<h1>{{name}}h1>
<h1>{{ say_hello(name) }}h1>
body>
html>
运行程序,访问localhost:8888 , 结果如下
———————————–分割线———————————–
然后再使用ui_modules
新建uimethod.py , 在这个文件中定义一个方法
ui_modules.py
from tornado.web import UIModule
class talk(UIModule):
def render(self , name):
return "Have a good day " + name
修改test.py文件
导入我们上面写的uimodule ,在settings中添加”ui_methods”
test.py
import tornado.web
import tornado.ioloop
import uimethod
import uimodule
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.render("tem.html" , name = "Lili")
settings = {
"ui_methods" : uimethod ,
"ui_modules" : uimodule
}
application = tornado.web.Application([
(r'/' , MainHandler),
] , **settings)
if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
修改tem.html文件,使用ui_modules:
tem.html
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
head>
<body>
<h1>{{name}}h1>
<h1>{{ say_hello(name) }}h1>
<h1>{% module talk(name) %}h1>
body>
html>
有了ui_methods , ui_modules 就可以使用python代码完成逻辑,tornado的这个功能很好用。
这个demo的链接是https://github.com/dangsh/pythonPra/tree/master/tornadoPra/uiPra
需要的可以去查看