tornado學習筆記day02-進階與提升

整理基礎工程

  • 請看第一天的配置文件目錄,搭建了一個框架的基礎目錄

Application

settings

debug

作用

可以設置tornado是否工作在調試模式下面,默認為false,即工作在生產模式下

true的特性:

自動重啟:
  • tornado程序會監控源代碼文件,會自動重啟服務器,減少我們手動重啟的次數,提高開發效率
  • 如果保存后有錯誤,導致重啟失敗,修改好后,不會再重啟了,需要我們手動進行重新啟動
  • 在debug開啟后,那四個特性咱也不太會啊,咱就想著能夠重啟就得了,那這可咋整,這個時候我們可以通過"autoreload" : True設置,僅僅有第一個特性
取消緩存編譯的模板:
  • 單獨設置:compiled_template_cache = False
  • ,這個默認值為true,這里要注意不是說我debug設置默認為啥,里面就默認都是啥
  • 你改完了模板的內容,它得加載你改了的啊,不能還用緩存的內容,要不然你看不到修改的新結果,這可不行
  • 雖然出于性能考慮,老也重新加載有點兒慢,但是沒事兒,畢竟開發中也不差這一點資源
取消緩存靜態文件的HASH值
  • 單獨設置:static_hash_cache = False
  • css文件每次后面都有一個哈希值,這個哈希值能緩存
  • 這樣我們都能重新加載這個css就OK了
提供追蹤信息
  • 如果我們的IndexHandler里面拋出了一個異常,但是他自己沒有捕獲這個異常,就會生成一個追蹤的頁面
  • 單獨設置:serve_traceback = True

template_path:

設置模板文件目錄

static_path :

設置靜態文件目錄

auto_escape :

當為None時,關閉項目的自動轉義

cookie_secret:

配置安全cookie秘鑰

xsrf_cookie:

當為True,開啟XSRF保護

login_url

用于定義登錄的路徑,默認找這里

路由

  • (r"/", index.IndexHandler),
  • 傳的參數在路由那嘎達的字典類型的數據

D:.
│  config.py
│  readme.md
│  server.py
│  application.py
│  
├─.idea
│  │  .gitignore
│  │  itcast_tornado.iml
│  │  misc.xml
│  │  modules.xml
│  │  vcs.xml
│  │  workspace.xml
│  │
│  └─inspectionProfiles
│          profiles_settings.xml
│
├─static # 靜態資源文件夾    
├─templates # 模板文件
├─upfile  # 上傳文件
│
└─views # 視圖│  index.py # 首頁視圖└─ __init__.py

version1.0

創建一個index.py文件在views包下面,內容如下

from tornado.web import RequestHandlerclass IndexHandler(RequestHandler):def get(self):self.write("main page info tornado!")

server.py文件中修改如下

import tornado.web
import tornado.ioloop
import tornado.httpserver
import tornado.options
import config
from views.index import IndexHandlerif __name__ == '__main__':app = tornado.web.Application([(r"/", IndexHandler)])httpServer = tornado.httpserver.HTTPServer(app)httpServer.bind(config.options["port"])httpServer.start(1)tornado.ioloop.IOLoop.current().start()

其中的config.py不用動

options = {"port": 8080,"list": ["good", "nice", "handsome"]
}

version2.0

創建一個application.py的文件,內容如下

import tornado.web
from views.index import IndexHandlerclass Application(tornado.web.Application):def __init__(self):handlers = [(r"/", IndexHandler)]super(Application,self).__init__(handlers)

然后服務端這么改

import tornado.ioloop
import tornado.httpserver
import tornado.optionsimport config
from application import Applicationif __name__ == '__main__':app = Application()httpServer = tornado.httpserver.HTTPServer(app)httpServer.bind(config.options["port"])httpServer.start(1)tornado.ioloop.IOLoop.current().start()

視圖都不用動

from tornado.web import RequestHandlerclass IndexHandler(RequestHandler):def get(self):self.write("main page info tornado!")

因為tornado不是Django那種大而全的,而是小而精的

所以配置也不用怎么動

# 參數
options = {"port": 8080
}# 配置
settings = {# static_path = "/","debug" : True
}

成了這就

然后我們再配置一個路由home
在application里面直接加就OK

import tornado.web
from views import indexclass Application(tornado.web.Application):def __init__(self):handlers = [(r"/", index.IndexHandler),(r"/home", index.HomeHandler),]super(Application,self).__init__(handlers)

然后在視圖中再創建一個對應的類

from tornado.web import RequestHandlerclass IndexHandler(RequestHandler):def get(self):self.write("main page info tornado!")class HomeHandler(RequestHandler):def get(self):self.write(" this is home page content!")

重啟服務即可在瀏覽器中訪問http://127.0.0.1:8080/home看到結果

配置路徑

Django中的那個BASE_DIRS挺好用的,我們也想有一個,那我們也可以整

import os
BASE_DIR = os.path.dirname(__file__)# 參數
options = {"port": 8080
}# 配置
settings = {# 這寫key的名字可不是隨便起的奧,是寫好的,# 就像upfile就沒有,你寫了也白扯'static_path' : os.path.join(BASE_DIR,"static"),'template_path' : os.path.join(BASE_DIR,"templates"),"debug" : True
}

路由參數的傳遞

傳遞的方式和Django差不多,但也有不同之處,這里直接上代碼

路由里面這樣發

import tornado.web
from views import indexclass Application(tornado.web.Application):def __init__(self):handlers = [(r"/", index.IndexHandler),(r"/sunck", index.SunckHandler,{'name':"victor",'age':19}),]super(Application,self).__init__(handlers)

視圖里面這樣接

from tornado.web import RequestHandlerclass IndexHandler(RequestHandler):def get(self):self.write("main page info tornado!")class SunckHandler(RequestHandler):# 該方法會在HTTP方法之前調用def initialize(self,age,name) -> None:self.age = ageself.name = namedef get(self):print(self.age)print(self.name)self.write("sunck page info tornado!")

這里不能再get方法中直接加上參數接受

需要重寫initialize方法,來對成員屬性進行定義

相似文章

tornado學習筆記day01
tornado學習筆記day02
tornado學習筆記day03
tornado學習筆記day04
tornado學習筆記day05
tornado學習筆記day06
tornado學習筆記day07
tornado學習筆記day08

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

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

相關文章

python123測驗2答案八邊形_Python試卷

3、寫一個函數&#xff0c;計算一個給定的日期是該年的第幾天。def getday(self,yNone,mNone,dNone):date datetime(y,m,d)days date.strftime(%j)return days4、寫一個函數&#xff0c;給定N&#xff0c;返回斐波那契數列第N項。def getn_vlaue(self,n):if n<2:return 1e…

java實體類如果不重寫toString方法,會如何?

先認識一下Object Object 類的 toString 方法 返回一個字符串&#xff0c;該字符串由類名&#xff08;對象是該類的一個實例&#xff09;、at 標記符“”和此對象哈希碼的無符號十六進制表示組成。換句話說&#xff0c;該方法返回一個字符串&#xff0c;它的值等于&#xff1a;…

H.264 中很有用的一些概念

Q:PSNR 峰值信噪比 是根據它來取qp是不是&#xff1f; A:不是 和QP沒有直接關系但是QP的選擇會影響到PSNR Q: 如果不用率失真最優化&#xff0c;為什么選擇SATD&#xff0b;deltar&#xff08;mv&#xff0c;mode&#xff09;作為模式選擇的依據&#xff1f;為什么運動估…

tornado學習筆記day03-響應輸出

write: 作用: 將chunk中的數據寫到輸出緩沖區 利用write方法寫json數據 我們自己手動序列化json的那種方式Content-Type 的屬性值為text-html而我們采用write自動序列化方式,我們的content-type 屬性為application/json set_default_headers(): 作用: 在進入HTTP響應方法…

Machine Learning——octave矩陣操作(2)——DAY3

矩陣的數學操作&#xff1a; Assumed: a為一個矩陣&#xff0c;m是一個向量 Log(a)——求每一個元素的對數 Exp(a)——以e為底的指數 1./a——求每個元素的導師 [a,b]max(m)——m是一個向量&#xff0c;a為m當中最大的元素&#xff0c;b為a在m中的排列序號&#xff08;已按從小…

python 多進程并發_python并發編程之多進程

一 multiprocessing模塊介紹python中的多線程無法利用多核優勢&#xff0c;如果想要充分地使用多核CPU的資源(os.cpu_count()查看)&#xff0c;在python中大部分情況需要使用多進程。Python提供了multiprocessing。multiprocessing模塊用來開啟子進程&#xff0c;并在子進程中執…

tornado學習筆記day04-執行順序

響應輸出 -> write 原型 self.write()函數 源碼中是這樣定義的 def write(self, chunk: Union[str, bytes, dict]) -> None:作用 將chunk數據寫到緩沖區 刷新緩沖區的四種方式 程序中斷手動刷新緩沖區滿了遇到\n 當你寫了一個print之后,不是直接就顯示在黑屏中斷…

字符串中文判斷

2019獨角獸企業重金招聘Python工程師標準>>> 1、判斷字符串是否全是中文或含有中文 <?php header(Content-type:text/html; charsetutf-8); $str 你好; if(preg_match(/^[\x{4e00}-\x{9fa5}]$/u, $str)>0){ echo 全是中文; …

angular使用動態組件后屬性值_Angular動態加載組件

引言有時候需要根據URL來渲染不同組件&#xff0c;我所指的是在同一個URL地址中根據參數的變化顯示不同的組件&#xff1b;這是利用Angular動態加載組件完成的&#xff0c;同時也會設法讓這部分動態組件也支持AOT。動態加載組件下面以一個Step組件為示例&#xff0c;完成一個3個…

分治2--取余運算

分治2--取余運算 一、心得 二、題目和分析 題目描述 輸入b&#xff0c;p&#xff0c;k的值&#xff0c;求bp mod k的值。其中b&#xff0c;p&#xff0c;k*k為長整型數。輸入 三個整數&#xff0c;分別為b&#xff0c;p&#xff0c;k的值輸出 bp mod k樣例輸入 2 10 9樣例輸出 …

-mysql-鎖機制分為表級鎖和行級鎖

2019獨角獸企業重金招聘Python工程師標準>>> 聲明&#xff1a;本欄目所使用的素材都是凱哥學堂VIP學員所寫&#xff0c;學員有權匿名&#xff0c;對文章有最終解釋權&#xff1b;凱哥學堂旨在促進VIP學員互相學習的基礎上公開筆記。 mysql鎖機制分為表級鎖和行級鎖 …

tornado學習筆記day05-訪問數據庫

模板## 配置模板路徑 這個在之前我們已經配置好了,可以參考前面的文章 settings {# 就像upfile就沒有,你寫了也白扯template_path: os.path.join(BASE_DIR, "templates"), }渲染并返回給客戶端 使用render()方法 class HomeIndexHandler(RequestHandler):def ge…

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># 這個就相等于一個…