Tornadao—模板语法(函数)

  • 函数


    static_url()
    Tornado模板模块提供了⼀个叫作static_url的函数来⽣成静态⽂件⽬录下⽂件的
    URL。如下⾯的示例代码
    
    
    <link rel="stylesheet" href="{{ static_url("style.css") }}">
    这个对static_url的调⽤⽣成了URL的值,并渲染输出类似下⾯的代码:
    <link rel="stylesheet" href="/static/style.css?v=ab12">
    
    
    
    优点:
    static_url函数创建了⼀个基于⽂件内容的hash值,并将其添加到URL末尾
    (查询字符串的参数v)。这个hash值确保浏览器总是加载⼀个⽂件的最新版
    ⽽不是之前的缓存版本。⽆论是在你应⽤的开发阶段,还是在部署到⽣产环境
    使⽤时,都⾮常有⽤,因为你的⽤户不必再为了看到你的静态内容⽽清除浏览
    器缓存了。
    另⼀个好处是你可以改变你应⽤URL的结构,⽽不需要改变模板中的代码。例
    如,可以通过设置static_url_prefix来更改Tornado的默认静态路径前
    缀/static。如果使⽤static_url⽽不是硬编码的话,代码不需要改变。
    
    

    <!DOCTYPE html>
    <html>
     <head>
     <title>新建房源</title>
     </head>
     <body>
     <form method="post">
     <textarea name="text"></textarea>
     <input type="submit" value="提交">
     </form>
     {{text}}
     </body>
    </html>

    class NewHandler(RequestHandler):
     def get(self):
     self.render("new.html", text="")
     def post(self):
     text = self.get_argument("text", "")
     print text
     self.render("new.html", text=text)

    我们查看⻚⾯源代码,发现<、>、"等被转换为对应的html字符。
    &lt;script&gt;alert(&quot;hello!&quot;);&lt;/script&gt;
    这是因为tornado中默认开启了模板⾃动转义功能,防⽌⽹站受到恶意攻击。
    我们可以通过raw语句来输出不被转义的原始格式,如:
    {% raw text %}
    
    
    
    注意:在Firefox浏览器中会直接弹出alert窗⼝,⽽在Chrome浏览器中,需要
    set_header("X-XSS-Protection", 0)
    若要关闭⾃动转义,⼀种⽅法是在Application构造函数中传
    递autoescape=None,另⼀种⽅法是在每⻚模板中修改⾃动转义⾏为,添加如下
    语句:
    {% autoescape None %}
    escape()
    关闭⾃动转义后,可以使⽤escape()函数来对特定变量进⾏转义,如:
    {{ escape(text) }}
发布了258 篇原创文章 · 获赞 6 · 访问量 3531

猜你喜欢

转载自blog.csdn.net/piduocheng0577/article/details/105061079