设置模板
方式一:
class MainHandler(RequestHandler):
async def get(self, *args, **kwargs):
word = "hello bobby"
loader = template.Loader("/xx/xx")
self.finish(loader.load("hello.html").generate(word=word))
方式二
class MainHandler(RequestHandler):
# http方法
async def get(self, *args, **kwargs):
word = "hello bobby"
self.render("templates/hello.html", word=word)
方式三
在方式二中 所有的路径前面都要加上templates,比较麻烦;可以统一在settings中指定好,即可省略去。
# tmplate_path在settings文件中需要指定好
settings = {"static_path": "/xx/xx/static",
"static_url_prefix": "/static/2",
"tmplate_path": "template" # 只写文件夹名称即可 不要写完整路径
}
tornado模板的理念是可以在html中添加python逻辑;很灵活但劣势也很明显,不利于前后端配合。
模板继承
占位符:
{% block body %}
{% end %}
继承(其他地方同base页面 只把包起来的部分替换掉)
{% extends 'base.html' %}
{% block body %}
<div></div>
{% end %}
UIModule
组件化开发(html js css可以打包成一个组件)
class OrderHandler(UIModule):
def render(self,order, *args, **kwargs):
self.render_string('ui_modules/order-list.html', order=order)
def css_files(self):
return ["xx/xx.css"]
def javascript_files(self):
return ["xx/xx.js"]
注:在实际项目中,自己不会来采用tornado的模板,本文只做一个自学过程中的简要记录。