所有flask程序都必須創建壹個程序實例。
web服務器使用wsgi接口協議將來自接收客戶端的所有請求轉發給該程序實例進行處理。這個程序實例是flask對象。
從燒瓶進口燒瓶
app = Flask(__name__)
#__name__確定程序的根目錄,以便以後可以找到資源文件相對於程序根目錄的位置。
2.路由和查看功能
程序實例需要知道url請求在收到請求後應該運行什麽代碼。從而保存了url和python函數之間的映射關系;這種映射關系稱為路由。
flask程序中工藝路線的編寫:
2.1#使用app.route裝飾器將裝飾後的函數註冊為路由。例如
@ app . route('/')def index():return " & lt;h 1 & gt;Hello World & lt/h1 >
#函數名不壹定要寫成index,只是和裝飾器關聯時寫的函數名。
#將索引函數註冊為程序根路徑的處理程序。函數的返回值被稱為響應,也就是客戶端接收到的內容。
像index這樣的函數叫做嘗試函數,嘗試函數返回的響應可以是包含html的簡單字符串,也可以是復雜的東西。
2.2#變量url部分映射,只需使用特定的decorator語法。
@ app . route('/user/& lt;name & gt')def user(name):return " & lt;h 1 & gt;妳好% s & lt/h1 >%(名稱)
調用嘗試函數時,flask會自動傳入動態部分作為參數。在此功能中,參數用於生成個人歡迎信息。
#備註:路由的動態部分默認使用string類型,可以使用int、float、path定義;例如
3.啟動服務器
調用程序實例app的run方法,啟動flask integration開發的web服務器。
if __name__ == "__main__ ":
app.run(調試=真)
Debug=True代表調試模式。flask的run方法啟動的服務器不適合生產,在這裏只用於測試。
4.壹個完整的燒瓶程序
什麽都不說,先說例子hello.py
從燒瓶進口燒瓶
app = Flask(__name__)
@ app . route('/')def index():return ' & lt;h 1 & gt;HelloWorld & lt/h 1 >;”@ app . route('/user/& lt;name & gt')def user(name):return " & lt;h 1 & gt;妳好% s & lt/h1 >%nameif __name__ == "__main__ ":
app.run(調試=真)
默認情況下,服務器機器的端口5000將被打開;127.0.0.1:5000
執行腳本pythonhello.py。
瀏覽器測試’)
還有壹種特殊的響應類型,flask提供了錯誤響應。這是由中止功能提供的。Abort拋出404異常,拋出異常後,控制權就交給web服務器了。
例如:
從燒瓶導入中止
@ app . route('/user/& lt;id & gt')def get_user(id):
user = load_user(id)如果不是用戶:
中止(404)返回' & lth 1 & gt;妳好,% s & lt/h 1 >;”%(用戶名)
10.flask的擴展flask-script
這個例子主要是關於如何在程序中添加flask擴展並使用
例如,在下面的示例中,您添加了壹個flask-script擴展,並使用命令行參數來增強程序的功能。
使用命令行啟動web服務器,而不是修改文件並將參數傳遞給run方法。
安裝擴展
pip安裝燒瓶-腳本
使用flask-script擴展,並將hello.py文件更改為命令行參數startup #的形式。默認情況下,添加的擴展將安裝在flask.ext名稱空間中。
從flask導入flask從flask.ext.script導入管理器
app = Flask(__name__)
經理=經理(應用程序)
@ app . route('/')def index():return ' & lt;h 1 & gt;HelloWorld & lt/h 1 >;”@ app . route('/user/& lt;name & gt')def user(name):return " & lt;h 1 & gt;妳好% s & lt/h1 >%nameif __name__ == "__main__ ":
manager.run()
壹個管理器類被添加到flask-script擴展中。在上面的示例中,通過將程序實例作為參數傳遞給構造函數來初始化主類的實例,從而初始化擴展。其他後續的長頸瓶擴展基本都是同樣的套路。
修改之後,可以使用壹組基本的命令行選項來啟動和調試程序。
Python hello.py shell#在flask應用上下文環境中運行python shell,方便測試調試web環境。
Python hello.py runserver#運行flask開發服務器app.run()。
Python hello.py -h#顯示幫助信息。
python hello.py runserver -幫助
用法:hello . py runserver[-h][-t HOST][-p PORT][-threaded]
[ -進程進程] [ -直通錯誤] [-d]
[-r]
python hello . pyrunserver-h 0 . 0 . 0 . 0-p 80 #這樣就打開了本機的80端口,其他機器可以遠程訪問。