美文网首页
tornado模板使用

tornado模板使用

作者: 雀知安 | 来源:发表于2017-11-05 08:45 被阅读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属性引用的是一个地址。

    相关文章

      网友评论

          本文标题:tornado模板使用

          本文链接:https://www.haomeiwen.com/subject/hdkcmxtx.html