tornado模板使用

2017-11-05  本文已影响0人  雀知安

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属性引用的是一个地址。

上一篇下一篇

猜你喜欢

热点阅读