app = Flask(__name__)相关说明
生活随笔
收集整理的這篇文章主要介紹了
app = Flask(__name__)相关说明
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#!/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類實現了一個WSGI應用
第5行,app是Flask的實例,它接收包或者模塊的名字作為參數,但一般都是傳遞__name__。讓flask.helpers.get_root_path函數通過傳入這個名字確定程序的根目錄,以便獲得靜態文件和模板文件的目錄。
第7~9行,使用app.route裝飾器會將URL和執行的視圖函數的關系保存到app.url_map屬性上。處理URL和視圖函數的關系的程序就是路由,這里的視圖函數就是hello_world。
第11行,使用這個判斷可以保證當其他文件引用這個文件的時候(例如“from hello import app”)不會執行這個判斷內的代碼,也就是不會執行app.run函數。
第12行,執行app.run就可以啟動服務了。默認Flask只監聽虛擬機的本地127.0.0.1這個地址,端口為5000。而我們對虛擬機做的端口轉發端口是9000,所以需要制定host和port參數,0.0.0.0表示監聽所有地址,這樣就可以在本機訪問了。服務器啟動后,會調用werkzeug.serving.run_simple進入輪詢,默認使用單進程單線程的werkzeug.serving.BaseWSGIServer處理請求,實際上還是使用標準庫BaseHTTPServer.HTTPServer,通過select.select做0.5秒的“while TRUE”的事件輪詢。當我們訪問“http://127.0.0.1:9000/”,通過app.url_map找到注冊的“/”這個URL模式,就找到了對應的hello_world函數執行,返回“hello world!”,狀態碼為200。如果訪問一個不存在的路徑,如訪問“http://127.0.0.1:9000/a”,Flask找不到對應的模式,就會向瀏覽器返回“Not Found”,狀態碼為404
''''''
"""第一部分,初始化:所有的Flask都必須創建程序實例,
web服務器使用wsgi協議,把客戶端所有的請求都轉發給這個程序實例
程序實例是Flask的對象,一般情況下用如下方法實例化
Flask類只有一個必須指定的參數,即程序主模塊或者包的名字,__name__是系統變量,該變量指的是本py文件的文件名"""from flask import Flask
app = Flask(__name__)# 第二部分,路由和視圖函數:
# 客戶端發送url給web服務器,web服務器將url轉發給flask程序實例,程序實例
# 需要知道對于每一個url請求啟動那一部分代碼,所以保存了一個url和python函數的映射關系。
# 處理url和函數之間關系的程序,稱為路由
# 在flask中,定義路由最簡便的方式,是使用程序實例的app.route裝飾器,把裝飾的函數注冊為路由@app.route('/')
def hello_world():return __name__# 第三部分:程序實例用run方法啟動flask集成的開發web服務器
# __name__ == '__main__'是python常用的方法,表示只有直接啟動本腳本時候,才用app.run方法
# 如果是其他腳本調用本腳本,程序假定父級腳本會啟用不同的服務器,因此不用執行app.run()
# 服務器啟動后,會啟動輪詢,等待并處理請求。輪詢會一直請求,直到程序停止。if __name__ == '__main__':print('dd',__name__)app.run()
如上述代碼所示,app是flask的實例,功能就是接受來自web服務器的請求,
瀏覽器將請求給web服務器,web服務器將請求給app ,
app收到請求,通過路由找到對應的視圖函數,然后將請求處理,得到一個響應response
然后app將響應返回給web服務器,
web服務器返回給瀏覽器,
瀏覽器展示給用戶觀看,流程完畢。
全世界的程序員們聯合起來吧!
總結
以上是生活随笔為你收集整理的app = Flask(__name__)相关说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习中不得不学的Graph Embe
- 下一篇: windows下安装Sublime+Mi