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
    • 引用其他文件:
    <link rel="stylesheet" href="{ {static_url('css/index.css')} }">
    <script src="{ {static_url('js/jquery.js')} }"></script>
    
  • StaticFileHandler

    • 使用原因:這種請求方式:http://127.0.0.1:8080/static/html/index.html對于用戶來說,體驗不佳

    • 本質: 是tornado預制的用來提供靜態資源文件的Handler

    • 作用: 可以通過StaticFileHandler來映射靜態資源文件

    • 使用:

      • 第一種寫法
      (r"/(.*)$", tornado.web.StaticFileHandler,{"path":os.path.join(BASE_DIR,"static/html"),}),
      
      • 第二種:
      (r"/(.*)$",tornado.web.StaticFileHandler,{"path": os.path.join(BASE_DIR, "static/html"),"default_filename": "index.html"}
      ),
      
    • 參數:

      • 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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455236.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455236.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455236.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

pythonelectron桌面開發案例_使用Electron開發基于Node.js的桌面應用

最近小編在查看分享資料時&#xff0c;發現一個可以開發跨平臺桌面應用的框架——NW.js(原名&#xff1a;node-webkit)。正當小編興致勃勃的研究NW.js的時候&#xff0c;最基礎的安裝環節出了問題。無論用npm還是cnpm都無法完整下載所依賴的包(具體原因待考察)。鑒于此&#xf…

x264_param_t結構體參數分析

參考網上的一些資料&#xff0c;結合個人的理解&#xff0c;對x264中x264_param_t結構體作了初步的分析&#xff0c;不保證正確。對x264熟悉的朋友可以在這基礎上修改添加typedef struct x264_param_t{/* CPU 標志位 */unsigned int cpu;int i_threads; /* 并行編…

知識點總結

1、把一個類轉換成一個xml&#xff0c;首先&#xff0c;類名前需要加特性&#xff0c;[DataContract(Namespace "http://CYSoft.Services/AuthorizationObject")]&#xff0c;[XmlRoot("Org")]&#xff0c;里邊的名字為根節點的名字&#xff0c;對各個屬性…

tornado學習筆記day06-應用安全

應用安全 cookie 普通cookie 一般我們的用戶表中都有啥呢 你在購物的時候,加入購物車,讓你登錄,那你登錄之后,他怎么知道你登錄了呢 token 這個值是隨機的,存在cookie里面 設置 原型: 設置cookie 的方法 def set_cookie(self,name: str,value: Union[str, bytes],domai…

托福試卷真題_干貨解答考生疑惑,自考真題考過了還會在出嗎?

重視真題&#xff01;重視真題&#xff01;重視真題&#xff01;重要的話要說三遍。想自考的你們一定要注意&#xff0c;對于歷年真題&#xff0c;從來都是“備考必做”的態度。做自考真題&#xff0c;除了可以讓自己盡快熟悉考試題型和考點外&#xff0c;還有什么好處呢&#…

x264 struct學習 1

x264_t 結構體維護著CODEC的諸多重要信息 其中成員frames是一個指示和控制幀編碼過程的結構。其中current是已經準備就緒可以編碼的幀&#xff0c;其類型已經確定&#xff1b;next是尚未確定類型的幀&#xff1b;unused用于回收不使用的frame結構體以備今后再次使用。 struct …

2016 ACM/ICPC Asia Regional Dalian Online

自己還是太菜&#xff0c;補題離不開題解。。。 但還是留個博客&#xff0c;萬一以后忘了。。。 1001 Different Circle Permutation Polya定理&#xff0c;第一次遇見&#xff0c;學習了一下。不旋轉的時候可以得到 f[i]f[i-1]f[i-2] 斐波那契數列&#xff0c;旋轉后就可以通過…

tornado學習筆記day07-同步與異步

同步 概念 同步就是按部就班的依次執行我們的代碼 進階 但是有些情況我們有一些比較耗時的從操作,比如去別的地方拿點資源,去其他網站請求數據,去訪問數據庫,上傳文件等等,所以這里面優點瑕疵,有小編一一道來 比如這樣 本模塊的功能:<同步異步demo># 這個就相等于一個…

關鍵字: on

關鍵字: on 數據庫在通過連接兩張或多張表來返回記錄時&#xff0c;都會生成一張中間的臨時表&#xff0c;然后再將這張臨時表返回給用戶。 在使用left jion時&#xff0c;on和where條件的區別如下&#xff1a; 1、 on條件是在生成臨時表時使用的條件&#xff0c;它不管on中的條…

天融信安全接入客戶端_天融信提示您警惕物聯網設備Ripple20漏洞風險

近日&#xff0c;天融信阿爾法實驗室在JSOF實驗室發布的由Treck公司開發的TCP/IP軟件庫中獲取到一系列0day漏洞。JSOF實驗室發布的這批漏洞共計19個&#xff0c;被JSOF研究人員稱為"Ripple20"。受此軟件庫影響的產品數量估計超過數億&#xff0c;其中包括智能家居設備…

Service-Oriented Architecture,SOA(轉)

http://blog.csdn.net/WOOSHN/article/details/8036910 介紹&#xff1a; IT體系結構已非常成熟&#xff0c;它是一種成功處理典型IT問題的方法。體系結構中一個受到很大重視且相對較新的分支是面向服務的體系結構(SOA)。SOA經常被吹捧為企業用于解決應用程序靈活性和高維護成本…

tornado學習筆記day08-tornado中的異步

概述 應為epoll主要用來解決網絡的并發問題,所以tornado中的異步也是主要體現在網絡的IO異步上,即異步web請求 tornado.httpclient.AsyncHTTPClient tornado提供異步web請求客戶端,可以用來進行異步web請求, 這個客戶端和服務端是相對來說的,當tornado的Handler去其他位置去…

GreenSock (TweenMax) 動畫案例(二)

實現效果 動畫分解 1.燈光閃爍2.文字出現3.水流4.心電圖 知識點 1.AI(可盡情騷擾UI歐巴)2.SVG(了解基本的知識點)3.TweenMax(GreenSock)4.CSS animation 寫在前面 寫過第一篇文章后GreenSock (TweenMax) 動畫案例(一)再回頭看發現代碼太多&#xff0c;根本沒耐心去看完。所以每…

vue 用key拿對象value_利用 WeakMap 對 Vue 新建數組中的對象賦予 :key

需求在 Vue 中&#xff0c;對組件進行循環都需要加入key以便“就地復用”&#xff0c;可是在某些情況下&#xff0c;我們需要新建多個對象&#xff0c;而這些對象不是從后端獲取到的&#xff0c;而是前端生成的&#xff0c;沒有唯一值&#xff0c;且 Vue 目前版本只允許字符串&…

無限輪播圖片的實現原理

無限輪播圖相信是很多開發人員常用的一個功能&#xff0c;這里總結一下常用的兩種方式的實現原理 一、使用UIScrollview實現無限輪播用UIScrollView實現&#xff0c;在scrollView上添加3個UIImageView&#xff0c;分別用來顯示上一張圖片&#xff0c;當前顯示的圖片&#xff0c…

開啟 JM 的 trace 功能

[JM代碼] 開啟 JM 的 trace 功能本帖最后由 firstime 于 2009-6-15 11:16 AM 編輯 城里漢子說過&#xff1a; trace文件對分析碼流結構很有效。我說的是trace文件&#xff0c;不是一步一步跟蹤&#xff0c;就是編解碼同時生成的 trace_enc.txt 這個文件&#xff0c;里面對每個比…

kafka入門介紹(轉載)

Kafka作為一個分布式的流平臺&#xff0c;這到底意味著什么&#xff1f; 我們認為&#xff0c;一個流處理平臺具有三個關鍵能力&#xff1a; 發布和訂閱消息&#xff08;流&#xff09;&#xff0c;在這方面&#xff0c;它類似于一個消息隊列或企業消息系統。 以容錯的方式存儲…

Cmd Markdown 編輯閱讀器

歡迎使用 Cmd Markdown 編輯閱讀器 我們理解您需要更便捷更高效的工具記錄思想&#xff0c;整理筆記、知識&#xff0c;并將其中承載的價值傳播給他人&#xff0c;Cmd Markdown 是我們給出的答案 —— 我們為記錄思想和分享知識提供更專業的工具。 您可以使用 Cmd Markdown&…

關于在smarty中實現省市區三級聯動

剛開始接觸php&#xff0c;&#xff0c;其實對于一些比較深入的東西還不是很了解&#xff0c;就像是這次的省市區聯動&#xff0c;都是用三張表為基礎編碼的&#xff0c;原諒我的無知&#xff0c;謝謝。 接下來就是編碼部分了&#xff1a; <?php require(./smarty/Smarty.c…

Ubuntu GitLab CI Docker ASP.NET Core 2.0 自動化發布和部署(1)

相關博文&#xff1a; Ubuntu 簡單安裝和配置 GitLabUbuntu 簡單安裝 DockerUbuntu Docker 簡單安裝 GitLabUbuntu Docker 安裝和配置 GitLab CI 持續集成服務器版本 Ubuntu 16.04 LTS。 經過上面四篇博文中的相關安裝和配置&#xff0c;我們主要完成了兩個容器的創建和運行&am…