app = Flask(__name__)相关说明
生活随笔
收集整理的這篇文章主要介紹了
app = Flask(__name__)相关说明
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
#!/usr/local/bin/python
# coding=utf-8from flask import Flask
app = Flask(__name__)@app.route('/')
def hello_world():return 'Hello World!'if __name__ == '__main__':app.run(host='0.0.0.0',port=9000)
'''
第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。而我們對(duì)虛擬機(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處理請(qǐng)求,實(shí)際上還是使用標(biāo)準(zhǔn)庫BaseHTTPServer.HTTPServer,通過select.select做0.5秒的“while TRUE”的事件輪詢。當(dāng)我們?cè)L問“http://127.0.0.1:9000/”,通過app.url_map找到注冊(cè)的“/”這個(gè)URL模式,就找到了對(duì)應(yīng)的hello_world函數(shù)執(zhí)行,返回“hello world!”,狀態(tài)碼為200。如果訪問一個(gè)不存在的路徑,如訪問“http://127.0.0.1:9000/a”,Flask找不到對(duì)應(yīng)的模式,就會(huì)向?yàn)g覽器返回“Not Found”,狀態(tài)碼為404
''''''
"""第一部分,初始化:所有的Flask都必須創(chuàng)建程序?qū)嵗?#xff0c;
web服務(wù)器使用wsgi協(xié)議,把客戶端所有的請(qǐng)求都轉(zhuǎn)發(fā)給這個(gè)程序?qū)嵗?程序?qū)嵗荈lask的對(duì)象,一般情況下用如下方法實(shí)例化
Flask類只有一個(gè)必須指定的參數(shù),即程序主模塊或者包的名字,__name__是系統(tǒng)變量,該變量指的是本py文件的文件名"""from flask import Flask
app = Flask(__name__)# 第二部分,路由和視圖函數(shù):
# 客戶端發(fā)送url給web服務(wù)器,web服務(wù)器將url轉(zhuǎn)發(fā)給flask程序?qū)嵗?#xff0c;程序?qū)嵗?# 需要知道對(duì)于每一個(gè)url請(qǐng)求啟動(dòng)那一部分代碼,所以保存了一個(gè)url和python函數(shù)的映射關(guān)系。
# 處理url和函數(shù)之間關(guān)系的程序,稱為路由
# 在flask中,定義路由最簡便的方式,是使用程序?qū)嵗腶pp.route裝飾器,把裝飾的函數(shù)注冊(cè)為路由@app.route('/')
def hello_world():return __name__# 第三部分:程序?qū)嵗胷un方法啟動(dòng)flask集成的開發(fā)web服務(wù)器
# __name__ == '__main__'是python常用的方法,表示只有直接啟動(dòng)本腳本時(shí)候,才用app.run方法
# 如果是其他腳本調(diào)用本腳本,程序假定父級(jí)腳本會(huì)啟用不同的服務(wù)器,因此不用執(zhí)行app.run()
# 服務(wù)器啟動(dòng)后,會(huì)啟動(dòng)輪詢,等待并處理請(qǐng)求。輪詢會(huì)一直請(qǐng)求,直到程序停止。if __name__ == '__main__':print('dd',__name__)app.run()
如上述代碼所示,app是flask的實(shí)例,功能就是接受來自web服務(wù)器的請(qǐng)求,
瀏覽器將請(qǐng)求給web服務(wù)器,web服務(wù)器將請(qǐng)求給app ,
app收到請(qǐng)求,通過路由找到對(duì)應(yīng)的視圖函數(shù),然后將請(qǐng)求處理,得到一個(gè)響應(yīng)response
然后app將響應(yīng)返回給web服務(wù)器,
web服務(wù)器返回給瀏覽器,
瀏覽器展示給用戶觀看,流程完畢。
全世界的程序員們聯(lián)合起來吧!
總結(jié)
以上是生活随笔為你收集整理的app = Flask(__name__)相关说明的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习中不得不学的Graph Embe
- 下一篇: CCKS 2018 | 工业界论坛报告简