3 第一個flask程式
1 pycharm新建專案
注意 如果找不到虛擬環境路徑可以參考虛擬環境其他命令
lsvirtualenv # 列出所有的虛擬環境
workon flaskenv # 切換到指定的虛擬環境
cdvirtualenv # 切換到指定的虛擬環境路徑 該目錄就是我們所要的路徑
2 第一個flask程式
from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__main__': app.run()
3 程式碼拆分為三部分
第一部分
from flask import Flask
app = Flask(__name__)
匯入我們安裝好的flask包,通過flask包匯入Flask類,Flask類即為Flask的核心,例項化這個Flask類的到一個例項化物件app。
__name__
這個特殊的引數:Python會根據所處的模組來賦予__name__
變數相應的值,對於我們的程式來說(app.py),這個值為app。
第二部分
@app.route('/')
def hello_world():
return 'Hello World!'
如果有過對其他web框架的瞭解,相信看見這個已經看出了一些門道。沒錯這個 @app.route('/')
那麼如果路由下面跟的函式什麼呢 ?沒錯就是我們的檢視函式,如果匹配到了路由就會觸發我們的檢視函式執行,並且return回具體的資料給前端或者移動端。
不是很理解沒關係,我們先大概有個印象,會在接下來的章節詳細講解路由以及檢視函式的使用
第三部分
if __name__ == '__main__':
app.run()
先不管邏輯判斷,先看 app.run()
, app.run()
原始碼如下去閱讀原始碼不難發現,在內部定義了預設的 ip+埠為127.0.0.1:5000,並且呼叫了werkzeug.serving為我們建立了一個開發伺服器(由依賴包Werkzeug提供),對套接字有一定了解的朋友,其內部就是做了一個迴圈監聽的功能以便互動.
關鍵詞:app.run()
實現了flask
程式在開發環境下執行起來,並且預設ip和埠是127.0.0.1:5000
。
def run(self, host=None, port=None, debug=None,
load_dotenv=True, **options):
...
_host ='127.0.0.1'
_port = 5000
...
host = host or sn_host or _host
port = int(port or sn_port or _port)
...
from werkzeug.serving import run_simple
try:
run_simple(host, port, self, **options)
finally:
# reset the first request information if the development server
# reset normally. This makes it possible to restart the server
# without reloader and that stuff from an interactive shell.
self._got_first_request = False
在第三部分中還有一個if
判斷,那麼這個判斷的作用是什麼呢,有python基礎的朋友對這個寫法大概不陌生,if
邏輯判斷時只有本檔案為執行檔案的時候才會執行,為什麼要這麼設計呢?因為在開發環境我們是以app.py作為執行檔案,但是在真實的生產環境下 ,此檔案會作為被呼叫的檔案,並且真實的生成環境不會用到app.run()做監聽分配
, 原因是效能太低了,
關鍵詞:保證了app.run()只用於開發環境,並且不影響真實的生產環境。
三部分串講
匯入Flask的核心類例項化物件app,然後app作為裝飾器使用匹配url分發給下面的檢視函式,然後執行該頁面會觸發app呼叫run()方法執行起來整個專案。