tonado 自定义模板 ui_methods , ui_modules 的使用

首先搞出一个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 , 结果如下
tonado 自定义模板 ui_methods , ui_modules 的使用_第1张图片
———————————–分割线———————————–
然后再使用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>

运行程序,访问localhost:8888 , 结果如下
tonado 自定义模板 ui_methods , ui_modules 的使用_第2张图片

有了ui_methods , ui_modules 就可以使用python代码完成逻辑,tornado的这个功能很好用。

这个demo的链接是https://github.com/dangsh/pythonPra/tree/master/tornadoPra/uiPra
需要的可以去查看

你可能感兴趣的:(tonado 自定义模板 ui_methods , ui_modules 的使用)