四. 网页模板
最终呈现给用户的html页面,一般是由静态信息与动态信息合成的,静态信息与用户等应用环境无关,动态信息则与用户、场景相关,多是从数据库中取得数据后加工得到的。在tornado中,保存在服务器端的包含动态信息的文件叫模板(template),模板文件被request handler载入并处理,即替换其中的动态信息,变成符合要求的html文档发给客户。
Tornado 会把模板文件编译成原生的 Python 脚本,然后在渲染视图的时候执行它,这包含几个问题:模板文件的位置组织;动态内容的定义与解析;UI内容的复用;文字国际化等。
1. Handler如何找到template
Application的配置中有template_path一项,指明template的位置,Handler载入时就按照这个配置。如果某一页的位置比较特殊,也可以重写RequestHandler.get_template_path方法指明template的位置。
2. Template中动态内容的定义
在静态内容中插入动态内容,需要定义两类东西:表达式和控制符。在tornado中,表达式由{ {}}包裹起来,放在模板中起到占位符的作用,解析时,该表达式被解析并被相应的结果所替代。控制符由{%%}所包裹起来,起到控制效果。一个简单的模板文件如下(template.html):
{#This is a demo template#}
<html>
<head>
<title>{
{ title }}</title>
</head>
<body>
<ul>
{% for item in items %}
<li>{
{ escape(item) }}</li>
{% end %}
</ul>
</body>
</html>
与该文本对应的python代码如下: