tornado框架基本页面
1.后端代码
import tornado.ioloop import tornado.web # web应用api from utils import ui_methods, ui_modules # 定义一个类,给模板使用 class People: def run(self): return '正在跑步' def eat(self): return '正在吃东西' class MainHandler(tornado.web.RequestHandler): # 定义一个方法,给模板使用 def test(self): return '这是一个方法' def get(self): html = '<h1>Hello World</h1>' data = { 'html': html, 'test': self.test, 'people': People } self.render('index.html', **data) def make_app(): return tornado.web.Application([ # tornado配置,静态文件等 (r"/", MainHandler), # 配置路由 ], debug=True, autoescape=None, # 所有html模板都是取消转义 static_path='../static', # 配置静态文件路径 template_path='../template', # 配置模板路径 ui_methods=ui_methods, # 注册自定义方法 ui_modules=ui_modules, # 注册自定义模板 ) if __name__ == "__main__": # 只有在当前文件运行的时候才会执行 app = make_app() app.listen(8888) tornado.ioloop.IOLoop.current().start() # 开启tornado服务
2.HTML页面
{% autoescape None %} <!-- 让整个html文件的标签都取消转义 --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> {{ html }}<br> {{ escape(html) }}<br> <!-- 让html标签转义 --> {% raw html %}<br> <!-- html标签取消转义 --> {{ test() }}<br> <!-- 使用后端的方法 --> {% set p = people() %} <!-- 使用后端的类,实例化 --> {{ p.run() }}<br> {{ p.eat() }}<br> {{ func() }}<br> <!-- 使用后端的方法 --> {% module Custom() %} <!-- 使用后端的类,实例化 --> </body> </html>
3.自定义模板
ui_modules.py文件:定义模板类与方法
# 用来写常用的类,给模板使用的 from tornado.web import UIModule class Custom(UIModule): def embedded_css(self): # 嵌入式css样式 return "h1{color:pink}" def css_files(self): return 'css静态文件' def embedded_javascript(self): # 嵌入javascript代码 return "alert(123)" def javascript_files(self): return 'javascript静态文件' def render(self,*args,**kwargs): # return "<h1>返回内容</h1>" # 不设置转译是什么东西直接输出 return self.render_string('404.html') # 也可以返回一个页面
ui_methods.py文件:自定义方法
# 用来写常用的函数,给模板使用的 def func(self): return '这是一个常用的方法'
4.运行效果图