Tornado模板

--------------------靜態文件--------------------
一、static_path:經過向web.Application類的構造函數傳遞一個名爲static_path的參數來告訴Tornado從文件系統的一個特定位置提供靜態文件
    app = tornado.web.Application(
        [(r'/', IndexHandler)],
        static_path=os.path.join(os.path.dirname(__file__), "statics"),
    )
 
二、對於靜態文件目錄的命名,爲了便於部署,建議使用static
    能夠經過http://127.0.0.1/static/html/index.html來訪問。並且在index.html中引用的靜態資源文件,咱們給定的路徑也符合/static/...的格式,故頁面能夠正常瀏覽。
 
三、StaticFileHandler:能夠經過tornado.web.StaticFileHandler來自由映射靜態文件與其訪問路徑url。
    一、tornado.web.StaticFileHandler是tornado預置的用來提供靜態資源文件的handler。
 
    二、
    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"),
    )
 
    三、path 用來指明提供靜態文件的根路徑,並在此目錄中尋找在路由中用正則表達式提取的文件名。
 
    四、default_filename 用來指定訪問路由中未指明文件名時,默認提供的文件。
 
 
--------------------使用模板--------------------
一、路徑與渲染
    一、使用模板,須要仿照靜態文件路徑設置同樣,向web.Application類的構造函數傳遞一個名爲template_path的參數來告訴Tornado從文件系統的一個特定位置提供模板文件
 
    二、
    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"),
    )
 
    三、在handler中使用render()方法來渲染模板並返回給客戶端。
        self.render("index.html") # 渲染主頁模板,並返回給客戶端。
 
二、模板語法
    一、變量與表達式
        一、在tornado的模板中使用{{}}做爲變量或表達式的佔位符,使用render渲染後佔位符{{}}會被替換爲相應的結果值。
            self.render("index.html",**kwargs)
 
        二、{{}}不只能夠包含變量,還能夠是表達式
            self.render("index.html",{"p1":100,"p2":200})
 
            {{p1 + p2}}
 
    二、控制語句
        一、在Tornado模板中使用Python條件和循環語句。控制語句以{\%和\%}包圍,並以相似下面的形式被使用:
            {% if page is None %} 或 {% if len(entries) == 3 %}
 
        二、部分控制語句
            一、{% if ... %} ... {% elif ... %} ... {% else ... %} ... {% end %}
 
            二、{% for ... in ... %} ... {% end %}
 
            三、{% while ... %} ... {% end %}
 
    三、函數
        一、static_url():Tornado模板模塊提供了一個叫做static_url的函數來生成靜態文件目錄下文件的URL。
            一、使用方法
            <link rel="stylesheet" href="{{ static_url("style.css") }}">
 
            二、static_url函數建立了一個基於文件內容的hash值,並將其添加到URL末尾(查詢字符串的參數v)。這個hash值確保瀏覽器老是加載一個文件的最新版而不是以前的緩存版本。不管是在你應用的開發階段,仍是在部署到生產環境使用時,都很是有用,由於你的用戶沒必要再爲了看到你的靜態內容而清除瀏覽器緩存了。
 
            三、另外一個好處是你能夠改變你應用URL的結構,而不須要改變模板中的代碼。例如,能夠經過設置static_url_prefix來更改Tornado的默認靜態路徑前綴/static。若是使用static_url而不是硬編碼的話,代碼不須要改變。
 
        二、轉義
            一、模板中能夠經過raw語句來輸出不被轉義的原始格式
 
            二、注意:在Firefox瀏覽器中會直接彈出alert窗口,而在Chrome瀏覽器中,須要set_header("X-XSS-Protection", 0)
 
            三、關閉自動轉義:
                一、Application中設置autoescape=None
 
                二、模板中添加 {% autoescape None %} 語句
 
            四、關閉自動轉義後,可使用escape()函數來對特定變量進行轉義:{{ escape(text) }}
 
        三、自定義函數:在模板中還可使用一個本身編寫的函數,只須要將函數名做爲模板的參數傳遞便可,就像其餘變量同樣。
            一、定義函數
            def house_title_join(titles):
                return "+".join(titles)
 
            二、將函數賦值到指定變量傳遞到模板
            self.render("index.html", houses=house_list, title_join = house_title_join)
 
            三、前端調用指定的函數,並傳入對應的參數
            {{title_join(house["titles"])}}
 
    四、塊
        一、進行模板頁的嵌套
            一、指定繼承的模板頁
                {% extends "base.html" %}
            二、定義對應的模塊,子模板繼承父級模板進行對應的替換操做
                {% block block_name %} {% end %}
相關文章
相關標籤/搜索