zoukankan      html  css  js  c++  java
  • Tornado模板

    --------------------静态文件--------------------
    1、static_path:通过向web.Application类的构造函数传递一个名为static_path的参数来告诉Tornado从文件系统的一个特定位置提供静态文件
        app = tornado.web.Application(
            [(r'/', IndexHandler)],
            static_path=os.path.join(os.path.dirname(__file__), "statics"),
        )
     
    2、对于静态文件目录的命名,为了便于部署,建议使用static
        可以通过http://127.0.0.1/static/html/index.html来访问。而且在index.html中引用的静态资源文件,我们给定的路径也符合/static/...的格式,故页面可以正常浏览。
     
    3、StaticFileHandler:可以通过tornado.web.StaticFileHandler来自由映射静态文件与其访问路径url。
        1、tornado.web.StaticFileHandler是tornado预置的用来提供静态资源文件的handler。
     
        2、
        import os
     
        current_path = os.path.dirname(__file__)
        app = tornado.web.Application(
            [
                (r'^/()$', StaticFileHandler, {"path":os.path.join(current_path, "statics/html"), "default_filename":"index.html"}),
                (r'^/view/(.*)$', StaticFileHandler, {"path":os.path.join(current_path, "statics/html")}),
            ],
            static_path=os.path.join(current_path, "statics"),
        )
     
        3、path 用来指明提供静态文件的根路径,并在此目录中寻找在路由中用正则表达式提取的文件名。
     
        4、default_filename 用来指定访问路由中未指明文件名时,默认提供的文件。
     
     
    --------------------使用模板--------------------
    1、路径与渲染
        1、使用模板,需要仿照静态文件路径设置一样,向web.Application类的构造函数传递一个名为template_path的参数来告诉Tornado从文件系统的一个特定位置提供模板文件
     
        2、
        app = tornado.web.Application(
            [(r'/', IndexHandler)],
            static_path=os.path.join(os.path.dirname(__file__), "statics"),
            template_path=os.path.join(os.path.dirname(__file__), "templates"),
        )
     
        3、在handler中使用render()方法来渲染模板并返回给客户端。
            self.render("index.html") # 渲染主页模板,并返回给客户端。
     
    2、模板语法
        1、变量与表达式
            1、在tornado的模板中使用{{}}作为变量或表达式的占位符,使用render渲染后占位符{{}}会被替换为相应的结果值。
                self.render("index.html",**kwargs)
     
            2、{{}}不仅可以包含变量,还可以是表达式
                self.render("index.html",{"p1":100,"p2":200})
     
                {{p1 + p2}}
     
        2、控制语句
            1、在Tornado模板中使用Python条件和循环语句。控制语句以{\%和\%}包围,并以类似下面的形式被使用:
                {% if page is None %} 或 {% if len(entries) == 3 %}
     
            2、部分控制语句
                1、{% if ... %} ... {% elif ... %} ... {% else ... %} ... {% end %}
     
                2、{% for ... in ... %} ... {% end %}
     
                3、{% while ... %} ... {% end %}
     
        3、函数
            1、static_url():Tornado模板模块提供了一个叫作static_url的函数来生成静态文件目录下文件的URL。
                1、使用方法
                <link rel="stylesheet" href="{{ static_url("style.css") }}">
     
                2、static_url函数创建了一个基于文件内容的hash值,并将其添加到URL末尾(查询字符串的参数v)。这个hash值确保浏览器总是加载一个文件的最新版而不是之前的缓存版本。无论是在你应用的开发阶段,还是在部署到生产环境使用时,都非常有用,因为你的用户不必再为了看到你的静态内容而清除浏览器缓存了。
     
                3、另一个好处是你可以改变你应用URL的结构,而不需要改变模板中的代码。例如,可以通过设置static_url_prefix来更改Tornado的默认静态路径前缀/static。如果使用static_url而不是硬编码的话,代码不需要改变。
     
            2、转义
                1、模板中可以通过raw语句来输出不被转义的原始格式
     
                2、注意:在Firefox浏览器中会直接弹出alert窗口,而在Chrome浏览器中,需要set_header("X-XSS-Protection", 0)
     
                3、关闭自动转义:
                    1、Application中设置autoescape=None
     
                    2、模板中添加 {% autoescape None %} 语句
     
                4、关闭自动转义后,可以使用escape()函数来对特定变量进行转义:{{ escape(text) }}
     
            3、自定义函数:在模板中还可以使用一个自己编写的函数,只需要将函数名作为模板的参数传递即可,就像其他变量一样。
                1、定义函数
                def house_title_join(titles):
                    return "+".join(titles)
     
                2、将函数赋值到指定变量传递到模板
                self.render("index.html", houses=house_list, title_join = house_title_join)
     
                3、前端调用指定的函数,并传入对应的参数
                {{title_join(house["titles"])}}
     
        4、块
            1、进行模板页的嵌套
                1、指定继承的模板页
                    {% extends "base.html" %}
                2、定义对应的模块,子模板继承父级模板进行对应的替换操作
                    {% block block_name %} {% end %}
     
  • 相关阅读:
    docker学习笔记(一)-vagrant/docker machine安装docker,阿里云通过docker machine安装docker
    docker安装 centos7
    Robot Framework user guide
    Powershell 备忘
    如何在linux系统内用openssl 生成 过期的证书
    同时装了Python3和Python2,怎么用pip?
    python 基础笔记三
    python 基础笔记二
    python对文件的操作
    3-4 字典的嵌套
  • 原文地址:https://www.cnblogs.com/qingtianyu2015/p/6124797.html
Copyright © 2011-2022 走看看