1,指定模板路径
app = tornado.web.Application(
handlers=[(r'/', IndexHandler), (r'/poem', PoemPageHandler)],
template_path=os.path.join(os.path.dirname(__file__), "templates")
)
首先,我们向Application对象的init方法传递了一个template_path参数,template_path参数告诉Tornado在哪里寻找模板文件。
2,编写模板文件
index.html
存放在templates目录下。
<!DOCTYPE html>
<html>
<head><title>模板</title></head>
<body>
<h1>Hello,Stranger!</h1>
</body>
</html>
demo2.html
<!DOCTYPE html>
<html>
<head><title>模板参数使用</title></head>
<body>
<h1>{{ name }}</h1>
<h1>{{ age }}</h1>
<h1>{{ sex }}</h1>
</body>
</html>
3,使用模板
self.render('index.html')
self.render('demo2.html',name='张三',age=100,sex='man')
4,模板语法
填充表达式
可以将任何Python表达式放在双大括号中。Tornado将插入任何表达式计算结果值的字符串到输出中。
<!DOCTYPE html>
<html>
<head><title>模板参数使用</title></head>
<body>
<h1>{{ 10+20 }}</h1>
<h1>{{ ‘hello’[2:] }}</h1>
<h1>{{ ','.join([str(x*x) for x in range(10)])}}</h1>
</body>
</html>
控制流语句
可以在Tornado模板中使用Python条件和循环语句,支持if、for、while和try。
语法:
{% 条件 %}
内容
{% end %}
{% for book in books %}
<li>{{ book }}</li>
{% end %}
{% if True %}
<h1>This True.</h1>
{% else %}
<h1>This False.</h1>
{% end %}
5,在模板中使用函数
Tornado在所有模板中默认提供了一些便利的函数。
escape(s)
替换字符串s中的&、<、>为他们对应的HTML字符。
url_escape(s)
使用urllib.quote_plus替换字符串s中的字符为URL编码形式。
json_encode(val)
将val编码成JSON格式。(在系统底层,这是一个对json库的dumps函数的调用。查阅相关的文档以获得更多关于该函数接收和返回参数的信息。)
squeeze(s)
过滤字符串s,把连续的多个空白字符替换成一个空格。
6,使用静态文件
设置静态路径
向Application类的构造函数传递一个名为static_path的参数来告诉Tornado从文件系统的一个特定位置提供静态文件。
app = tornado.web.Application(
handlers=[(r'/', IndexHandler), (r'/poem', MungedPageHandler)],
template_path=os.path.join(os.path.dirname(__file__), "templates"),
static_path=os.path.join(os.path.dirname(__file__), "static"),
debug=True
)
现在应用将以读取static目录下读取静态文件。
使用静态文件
Tornado模板模块提供了一个叫作static_url
的函数来生成static目录下文件的URL。
例如使用static目录下的style.css文件。
<link rel="stylesheet" href="{{ static_url("style.css") }}">
static_url函数会生成/static/style.css?v=ab12
,即:
<link rel="stylesheet" href="/static/style.css?v=ab12">
static_url
函数创建了一个基于文件内容的hash值
,并将其添加到URL末尾(查询字符串的参数v
)。这个hash值确保浏览器总是加载一个文件的最新版而不是之前的缓存版本。无论是在你应用的开发阶段,还是在部署到生产环境使用时,都非常有用,因为你的用户不必再为了看到你的静态内容而清除浏览器缓存了。
注意在使用static_url函数生成静态文件路径时必须用{{ }}括起来,因为href属性引用的是一个地址。
网友评论