tornado学习笔记day05-访问数据库
模板## 配置模板路徑
這個在之前我們已經(jīng)配置好了,可以參考前面的文章
settings = {# 就像upfile就沒有,你寫了也白扯'template_path': os.path.join(BASE_DIR, "templates"), }渲染并返回給客戶端
使用render()方法
class HomeIndexHandler(RequestHandler):def get(self):self.render("home.html")變量與表達(dá)式
語法
- { { var } }
- { { expression } }
實例
class HomeIndexHandler(RequestHandler):def get(self):temp = 100# 直接傳一個變量就行self.render("home.html",num = temp)# self.render("home.html") <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>主頁</title> </head> <body><h1>這里是主頁</h1>{ { num } }<br><!-- 這里支持加減 -->{ { num + 1 } }{ { num + 18 } }<!-- 這里需要用模板的注釋才能真正的注釋掉雙大括號 --><!-- 這里一定要注意,這個普通的注釋會被加載到頁面中 -->{# num: { { num } } #}<!-- 模板的注釋才是真正的注釋 -->{# num: { { num + 10 } } #}<!-- 等號的賦值的不好使的,會報錯 -->{# num: { { num = 5} } #} </body> </html>流程控制
if
格式
單個的if
{ % if表達(dá)式 % } 語句 { % end % }if和else的
{ % if表達(dá)式 % } 語句1 { % else % } 語句2 { % end % }多個if 的
{ % if表達(dá)式1 % } 語句1 { % elif 表達(dá)式2% } 語句2 { % elif 表達(dá)式3% } 語句3 <!--這里面else可有可無--> { % end % }實例
{ % if flag == 0% } flag確實是0 { % elif flag == 0 % 語句2 { % elif flag == 2 % } flag bug { % else % } baiche { % end % }for
這里面需要注意的是,結(jié)束模板語法都是{ % end % }
{ % for 變量 in 集合 % } 語句 { % end % }實例:
<ul>{ % for stu in stus % }<li>{ { stu } }</li>{ % end % } </ul>while
這個while很少使用,就不寫了
函數(shù)
static_url()
作用
- 獲取配置中的靜態(tài)目錄的路徑
- 將參數(shù)拼接到靜態(tài)目錄后面并返回新的路徑
示例
<link rel="stylesheet" href="{ { static_url('css/home.css') } }">優(yōu)點
- 修改目錄的話 只需要修改配置文件中的內(nèi)容即可,不需要修改各種頁面中的URL
- Hash值
- static_url創(chuàng)建了基于文件內(nèi)容的Hash值
- 將其添加到文件的末尾(當(dāng)一個查詢參數(shù))
- 這個hash值總能夠保證,我們每一次加載最新的版本
- 而不是之前的緩存的版本
- 不論是開發(fā)階段還是線上階段,都是很有必要的
轉(zhuǎn)義
tornado默認(rèn)開啟自動轉(zhuǎn)義功能,能夠防止網(wǎng)站攻擊
class TranHandler(RequestHandler):def get(self):str = "<h1>能不能轉(zhuǎn)義就看這會的了</h1>"self.render("trans.html",str = str) <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>轉(zhuǎn)義</title> </head> <body> { {str} } </body> </html>頁面這樣顯示
<h1>能不能轉(zhuǎn)義就看這會的了</h1>關(guān)閉自動轉(zhuǎn)義
- raw:{ % raw str % }這個會關(guān)閉一行
- 在頁面模板中修改
- autoescape:{ % autoescape None % }
- 這個不管你三七二十一都關(guān)閉了就
- 在配置文件中修改
- autoescape : None
- 當(dāng)為None時關(guān)閉當(dāng)前項目的自動轉(zhuǎn)義
- escape()函數(shù)
- 這個函數(shù)能夠在全局轉(zhuǎn)義的條件下再不轉(zhuǎn)義
- { { escape(str) } }
繼承
靜態(tài)文件
-
static_path
- 作用
- 告訴tornado從文件系統(tǒng)中某一個特定的位置提供我們的靜態(tài)文件
- 示例:'static_path': os.path.join(BASE_DIR, "static"),
- 請求方式:http://127.0.0.1:8080/static/html/index.html
- 引用其他文件:
- 作用
-
StaticFileHandler
-
使用原因:這種請求方式:http://127.0.0.1:8080/static/html/index.html對于用戶來說,體驗不佳
-
本質(zhì): 是tornado預(yù)制的用來提供靜態(tài)資源文件的Handler
-
作用: 可以通過StaticFileHandler來映射靜態(tài)資源文件
-
使用:
- 第一種寫法
- 第二種:
-
參數(shù):
- path:用來指定訪問提供靜態(tài)文件根路徑
- default_filename:用來指定訪問路由中未指定文件名時,訪問哪個靜態(tài)中的文件
-
注意:
- 最好在其他路由的最下面寫
- 否則可能會不匹配
- 其中的路由可以去參考一下百度的
-
數(shù)據(jù)庫
概述
tornado目前沒有自己的數(shù)據(jù)庫,需要連接數(shù)據(jù)庫,還得自己去適配
目前python3.6+tornado還沒有完善的驅(qū)動
磁盤數(shù)據(jù)庫和內(nèi)存數(shù)據(jù)庫:
比如你以前你的爸爸,那個手機(jī)啊,欠費了好幾十還不給你停機(jī)
因為數(shù)據(jù)還沒來得及處理,那個話費單,得一條一條處理,他處理不過來,知道么,當(dāng)你欠費的時候,他還不知道你欠費呢
現(xiàn)在就不一樣了,你的話單數(shù)據(jù)都在內(nèi)存里面了,你一旦欠費,馬上就給你停機(jī),O(∩_∩)O哈哈~
redis的開源的內(nèi)存數(shù)據(jù)庫,移動聯(lián)通都不用這種數(shù)據(jù)庫
內(nèi)存數(shù)據(jù)庫是國內(nèi)06年開始有人在搞
從13年開始,又出現(xiàn)了一個分布式內(nèi)存數(shù)據(jù)庫,現(xiàn)在人們都有錢了,數(shù)據(jù)量大了,一臺服務(wù)器都存不下了
14年開始,又升級了一下,這次升級的是硬件,以前用的是萬兆網(wǎng)卡,現(xiàn)在更NB了
鏈接
在應(yīng)用啟動時,創(chuàng)建一個數(shù)據(jù)庫鏈接實例,供各個requestHandler使用
在requestHandler中,通過self.application來獲取對象
相似文章
tornado學(xué)習(xí)筆記day01 tornado學(xué)習(xí)筆記day02 tornado學(xué)習(xí)筆記day03 tornado學(xué)習(xí)筆記day04 tornado學(xué)習(xí)筆記day05 tornado學(xué)習(xí)筆記day06 tornado學(xué)習(xí)筆記day07 tornado學(xué)習(xí)筆記day08總結(jié)
以上是生活随笔為你收集整理的tornado学习笔记day05-访问数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .net core linux 编译,.
- 下一篇: 启动U盘更换背景图片和图标的方法