tornado学习笔记day02-进阶与提升
整理基礎(chǔ)工程
- 請(qǐng)看第一天的配置文件目錄,搭建了一個(gè)框架的基礎(chǔ)目錄
Application
settings
debug
作用
可以設(shè)置tornado是否工作在調(diào)試模式下面,默認(rèn)為false,即工作在生產(chǎn)模式下
true的特性:
自動(dòng)重啟:
- tornado程序會(huì)監(jiān)控源代碼文件,會(huì)自動(dòng)重啟服務(wù)器,減少我們手動(dòng)重啟的次數(shù),提高開發(fā)效率
- 如果保存后有錯(cuò)誤,導(dǎo)致重啟失敗,修改好后,不會(huì)再重啟了,需要我們手動(dòng)進(jìn)行重新啟動(dòng)
- 在debug開啟后,那四個(gè)特性咱也不太會(huì)啊,咱就想著能夠重啟就得了,那這可咋整,這個(gè)時(shí)候我們可以通過"autoreload" : True設(shè)置,僅僅有第一個(gè)特性
取消緩存編譯的模板:
- 單獨(dú)設(shè)置:compiled_template_cache = False
- ,這個(gè)默認(rèn)值為true,這里要注意不是說我debug設(shè)置默認(rèn)為啥,里面就默認(rèn)都是啥
- 你改完了模板的內(nèi)容,它得加載你改了的啊,不能還用緩存的內(nèi)容,要不然你看不到修改的新結(jié)果,這可不行
- 雖然出于性能考慮,老也重新加載有點(diǎn)兒慢,但是沒事兒,畢竟開發(fā)中也不差這一點(diǎn)資源
取消緩存靜態(tài)文件的HASH值
- 單獨(dú)設(shè)置:static_hash_cache = False
- css文件每次后面都有一個(gè)哈希值,這個(gè)哈希值能緩存
- 這樣我們都能重新加載這個(gè)css就OK了
提供追蹤信息
- 如果我們的IndexHandler里面拋出了一個(gè)異常,但是他自己沒有捕獲這個(gè)異常,就會(huì)生成一個(gè)追蹤的頁(yè)面
- 單獨(dú)設(shè)置:serve_traceback = True
template_path:
設(shè)置模板文件目錄
static_path :
設(shè)置靜態(tài)文件目錄
auto_escape :
當(dāng)為None時(shí),關(guān)閉項(xiàng)目的自動(dòng)轉(zhuǎn)義
cookie_secret:
配置安全cookie秘鑰
xsrf_cookie:
當(dāng)為True,開啟XSRF保護(hù)
login_url
用于定義登錄的路徑,默認(rèn)找這里
路由
- (r"/", index.IndexHandler),
- 傳的參數(shù)在路由那嘎達(dá)的字典類型的數(shù)據(jù)
version1.0
創(chuàng)建一個(gè)index.py文件在views包下面,內(nèi)容如下
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不用動(dòng)
options = {"port": 8080,"list": ["good", "nice", "handsome"] }version2.0
創(chuàng)建一個(gè)application.py的文件,內(nèi)容如下
import tornado.web from views.index import IndexHandlerclass Application(tornado.web.Application):def __init__(self):handlers = [(r"/", IndexHandler)]super(Application,self).__init__(handlers)然后服務(wù)端這么改
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()視圖都不用動(dòng)
from tornado.web import RequestHandlerclass IndexHandler(RequestHandler):def get(self):self.write("main page info tornado!")因?yàn)閠ornado不是Django那種大而全的,而是小而精的
所以配置也不用怎么動(dòng)
# 參數(shù) options = {"port": 8080 }# 配置 settings = {# static_path = "/","debug" : True }成了這就
然后我們?cè)倥渲靡粋€(gè)路由home
在application里面直接加就OK
然后在視圖中再創(chuàng)建一個(gè)對(duì)應(yīng)的類
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!")重啟服務(wù)即可在瀏覽器中訪問http://127.0.0.1:8080/home看到結(jié)果
配置路徑
Django中的那個(gè)BASE_DIRS挺好用的,我們也想有一個(gè),那我們也可以整
import os BASE_DIR = os.path.dirname(__file__)# 參數(shù) options = {"port": 8080 }# 配置 settings = {# 這寫key的名字可不是隨便起的奧,是寫好的,# 就像upfile就沒有,你寫了也白扯'static_path' : os.path.join(BASE_DIR,"static"),'template_path' : os.path.join(BASE_DIR,"templates"),"debug" : True }路由參數(shù)的傳遞
傳遞的方式和Django差不多,但也有不同之處,這里直接上代碼
路由里面這樣發(fā)
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):# 該方法會(huì)在HTTP方法之前調(diào)用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方法中直接加上參數(shù)接受
需要重寫initialize方法,來對(duì)成員屬性進(jìn)行定義
相似文章
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学习笔记day02-进阶与提升的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里巴巴中文站架构设计实践(何崚)图书
- 下一篇: Windows Tomcat 内存溢出解