Tornado模板系统详解
1. 模板基础准备工作与环境搭建
Tornado提供了一种轻量级、快速且灵活的模板语言,位于tornado.template模块中。这种模板语言允许在HTML文件中嵌入Python代码片段,使得页面内容可以动态生成。
为了开始使用Tornado模板,首先需要创建一个项目结构。假设我们在tornado文件夹下新建了一个名为lesson4的文件夹,在该文件夹中继续创建start1.py文件,并添加以下基本配置:
template_path='templates', static_path='static'
接下来,创建两个子文件夹:templates(用于存放HTML文件)和static(用于存放图片、CSS和JS等静态资源)。
然后,在Application类中配置路由,并使用render方法渲染模板:
(r'/', IndexHandler),
class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.render('index.html')
这段代码会从templates文件夹中加载index.html文件,读取其内容并发送给浏览器。
在templates文件夹下创建index.html文件,并在body部分添加简单的欢迎信息:
hello boys and girls!
运行后将显示相应的结果。
模板语法符号
Tornado模板支持多种语法符号,包括:
- {{ ... }}:用于表达式,可以在其中放置任何Python表达式。
- {% ... %}:用于控制语句,如条件判断和循环。
- {# ... #}:用于注释。
例如,创建一个带有表单的HTML文件IndexHandler.html:
用户名
密码
并在处理器文件中处理表单提交:
class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.render('index1.html')
def post(self):
username = self.get_argument('name', 'no')
self.render('index2.html', username=username)
这样,当用户提交表单时,会显示欢迎信息:
欢迎用户 {{ username }} 登录
Tornado模板还支持更复杂的表达式,例如:
{{ 10 + 27 }}
{{ time.time() }}
{{ haha() }}
在处理器中定义相关函数:
def haha(self):
return '这里是tornado'
def get(self):
username = self.get_argument('name', 'no')
import time
li = ['a', 'b', 'c', 'd']
self.render('index.html', username=username, time=time, haha=self.haha, li=li)
控制语句
Tornado模板中的控制语句类似于Python的语法,以{% end %}结束。以下是if条件判断和for循环的例子:
{% if username != 'no' %}
欢迎用户 {{ username }} 登录
{% else %}
您还没有登录
{% end %}
{% for i in li %}
{{ i }}
{% end %}
通过这些基础知识,我们可以进一步探索Tornado模板的更多功能和高级用法。