tornado【2】模板使用

Tornado提供了一个简单,快速,灵活的模板引擎。

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目录下。



    模板
    
        

Hello,Stranger!

demo2.html



    模板参数使用
    
        

{{ name }}

{{ age }}

{{ sex }}

3,使用模板

self.render('index.html')
self.render('demo2.html',name='张三',age=100,sex='man')

4,模板语法

填充表达式

可以将任何Python表达式放在双大括号中。Tornado将插入任何表达式计算结果值的字符串到输出中。



    模板参数使用
    
        

{{ 10+20 }}

{{ ‘hello’[2:] }}

{{ ','.join([str(x*x) for x in range(10)])}}

控制流语句

可以在Tornado模板中使用Python条件和循环语句,支持if、for、while和try。
语法:

{% 条件 %}
      内容
{% end %}
   {% for book in books %}
        
  • {{ book }}
  • {% end %} {% if True %}

    This True.

    {% else %}

    This False.

    {% 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文件。

    
    

    static_url函数会生成/static/style.css?v=ab12,即:

    
    

    static_url函数创建了一个基于文件内容的hash值,并将其添加到URL末尾(查询字符串的参数v)。这个hash值确保浏览器总是加载一个文件的最新版而不是之前的缓存版本。无论是在你应用的开发阶段,还是在部署到生产环境使用时,都非常有用,因为你的用户不必再为了看到你的静态内容而清除浏览器缓存了。
    注意在使用static_url函数生成静态文件路径时必须用{{ }}括起来,因为href属性引用的是一个地址。

    你可能感兴趣的:(tornado【2】模板使用)