tornado模板學習筆記

Tornado模板學習

tornado是一個python編寫的一個強大的、可擴展的web服務器。

Tornado包括了一個有用的模塊(tornado.options)來從命令行中讀取設置

Tornado的RequestHandler類有一系列有用的內建方法,包括get_argument,我們在這裏從一個查詢字符串中取得參數greeting的值。(如果這個參數沒有出現在查詢字符串中,Tornado將使用get_argument的第二個參數作爲默認值。)

RequestHandler的另一個有用的方法是write,它以一個字符串作爲函數的參數,並將其寫入到HTTP響應中

一旦Application對象被創建,我們可以將其傳遞給Tornado的HTTPServer對象,然後使用我們在命令行指定的端口進行監聽(通過options對象取出。)最後,在程序準備好接收HTTP請求後,我們創建一個Tornado的IOLoop的實例。

基本瞭解

	 1、在Application的參數中添加template_path配置,指定模板的路徑和靜態文件的路徑
	  
	   template_path='template';
	   static_path='static';
	   
	2、把html文件放入template文件夾下,把靜態文件放入static文件夾下

	3、使用render方法渲染模板

		class IndexHandler(tornado.Web.RequestHandler);
			def get(self);
			self.render('tmp_index.html');
			
	這段代碼告訴Tornado在templates文件夾下找到一個名爲tmeplate_index.html 的文件,讀取其中的內容,並且發送給瀏覽器

模板中的符號

	{{}}表達式用雙括號包圍,內容是可以是如何python表達式,在雙大括號中的單詞是佔位符
	{% %}模板控制語句以{% %}包圍
	
	### 1、雙大括號中放置變量名或表達式,變量名與傳入的關鍵字參數名要相同
	
	```python
		#傳入一個表達式
		{{ 1+2 }} 
		<br>
		{{ time.time() }} # 可以執行函數
		<br>
		{{ haha() }} # 自定義的函數也可以傳入

	```

2、控制語句

	控制語句的返回以最近的{% end %}結束
	
	if條件判斷
		{% if condition %}
		{% else condition %}
		{% else %}
		{% end %}
	for循環
		{% for var in expr %}
		...
		{% end %}

模板轉義

		atag = "<a href='https://www.baidu.com/' target='_blank'>'---百度---' </a><br> "
			self.render('03escape.html',
				username=username,
				time=time,
				urllist=urllist,
				atag=atag
            )
	當然這個默認自動是轉義的,如果不要轉義也是可以的,有如下方法:

	1.全局轉義,在Application中添加配置項

	autoescape=None,
	2.在文檔最開始添加

	{% autoescape None %} #實現整個文檔轉義

		{{ atag }}
		{{ escape(atag) }}
	3.也可以使用 {% raw xxx %} 來輸出不轉義內容

	{% raw atag %}

模板繼承

	把多個頁面相同的內容提取出來放在一個base.html文件中,各個子html文件不同的內容使用塊語句佔位
	子html重寫這個塊中的內容。

模板中使用函數

	escape(s) 替換字符串中的&、<、>爲他們對應的html字符。
	url_escape(s) 使用urllib.quote_plus替換字符串中的字符爲URL編碼格式。
	json_encode(val) 將val轉換json格式
	squeeze(s) 過濾字符串s,把連續的多個空白字符替換爲一個空格
	
	static_url的函數來生成static目錄下文件的URL

模板擴展

	語法:{% extends "filename.html" %}

	塊,block語句
	語法:{% block header %}{% end %}
	
	注:一個語法錯誤或者沒有閉合的{% block %}語句可以使得瀏覽器直接顯示500: Internal Server Error(如果你運行在debug模式下會引發完整的Python堆棧跟蹤)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章