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