--------------------靜態文件--------------------
一、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 %}