Flask 框架app = Flask(__name__) 解析
第4行,引入Flask類,Flask類實(shí)現(xiàn)了一個(gè)WSGI應(yīng)用
第5行,app是Flask的實(shí)例,它接收包或者模塊的名字作為參數(shù),但一般都是傳遞__name__。
??? 讓flask.helpers.get_root_path函數(shù)通過傳入這個(gè)名字確定程序的根目錄,以便獲得靜態(tài)文件和模板文件的目錄。
第7~9行,使用app.route裝飾器會(huì)將URL和執(zhí)行的視圖函數(shù)的關(guān)系保存到app.url_map屬性上。
??? 處理URL和視圖函數(shù)的關(guān)系的程序就是路由,這里的視圖函數(shù)就是hello_world。
第11行,使用這個(gè)判斷可以保證當(dāng)其他文件引用這個(gè)文件的時(shí)候(例如“from hello import app”)不會(huì)執(zhí)行這個(gè)判斷內(nèi)的代碼,也就是不會(huì)執(zhí)行app.run函數(shù)。
第12行,執(zhí)行app.run就可以啟動(dòng)服務(wù)了。默認(rèn)Flask只監(jiān)聽虛擬機(jī)的本地127.0.0.1這個(gè)地址,端口為5000。
??? 而我們對虛擬機(jī)做的端口轉(zhuǎn)發(fā)端口是9000,所以需要制定host和port參數(shù),0.0.0.0表示監(jiān)聽所有地址,這樣就可以在本機(jī)訪問了。
??? 服務(wù)器啟動(dòng)后,會(huì)調(diào)用werkzeug.serving.run_simple進(jìn)入輪詢,默認(rèn)使用單進(jìn)程單線程的werkzeug.serving.BaseWSGIServer處理請求,
??? 實(shí)際上還是使用標(biāo)準(zhǔn)庫BaseHTTPServer.HTTPServer,通過select.select做0.5秒的“while TRUE”的事件輪詢。
??? 當(dāng)我們訪問“http://127.0.0.1:9000/”,通過app.url_map找到注冊的“/”這個(gè)URL模式,就找到了對應(yīng)的hello_world函數(shù)執(zhí)行,返回“hello world!”,狀態(tài)碼為200。
??? 如果訪問一個(gè)不存在的路徑,如訪問“http://127.0.0.1:9000/a”,Flask找不到對應(yīng)的模式,就會(huì)向?yàn)g覽器返回“Not Found”,狀態(tài)碼為404
轉(zhuǎn)載于:https://www.cnblogs.com/xiaojinniu425/p/9438680.html
總結(jié)
以上是生活随笔為你收集整理的Flask 框架app = Flask(__name__) 解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入Nginx之《常用参数配置技巧》
- 下一篇: 华夏银行信用卡灵活分期手续费多少?怎么计