1. 程式人生 > >Flask 框架簡單入門

Flask 框架簡單入門

Flask框架介紹

Flask 框架

什麼是Flask?

flask是一種基於python ,並且依賴於Jinja2模板引擎(提供網頁解析)和 Werkzeug WSGI服務(python web應用與web 服務之間的介面)的一種微型框架。其中:
Jinja2模板引擎:通俗來講就是伺服器接收到使用者請求之後,將資料傳入HTML檔案中後,經過模板引擎的渲染將其呈現在網頁中響應給使用者。
Werkzeug WSGI:python web 應用程式是一個被呼叫的物件,它無法直接與web 伺服器直接建立聯絡,所以WSGI的功能就是提供程式與服務之間的通訊。它規定了一個app介面,server會傳遞給 web 應用所有的請求資訊以及響應之後需要呼叫的函式。

Flask 框架模式 --MTV

M(Models) —— 模型層:負責資料庫的建模。
T(Templates) —— 模板層:用於處理使用者顯示的內容。如:html
V (Views)—— 檢視層:處理與使用者互動的部分內容。如:處理使用者的請求並給出響應
使用者在瀏覽器上請求地址,瀏覽器將請求傳送給檢視層,檢視層根據請求地址分配對應的檢視函式,檢視函式通過模型層查詢資料,並將資料傳送給模板,最後模板層將資料響應在網頁上。

flask的安裝

在Linux 系統上:sudo pip3 install flask
sudo pip install flask

Flask 簡單程式入門

1 建立路由

客戶端將請求傳送給web伺服器,web 伺服器再將請求傳送給flask 程式例項,程式例項需要知道每個url請求執行哪些程式碼,所以需要建立url到python 函式之間的對映,將url與需要被呼叫的函式建立聯絡。
在flask中,使用 @app.route() 來建立路由。

2 路由的基本表示

路由的基本表示

@app.route('/')
#/表示網站的根路徑,在瀏覽器視窗輸入 localhost:5000/ 進行訪問

帶引數的路由

基本帶參路由

flask中支援的資料型別轉換器

型別轉換器 作用
預設 字串型,但不能有/
int 整型
float 浮點型
path 字串型,可以有/
@app.route('/show1/<name>')
#在瀏覽器輸入 localhost:5000/show1/xxx 進行訪問
def show1(name):
    #在函式中name表示的是位址列上傳遞過來的引數
    return '<h1>姓名為:%s</h1>' % name
帶多個引數的路由
@app.route('/show2/<name>/<age>')
def show2(name,age):
    return '<h1>姓名為:%s,年齡為:%s</h1>' % (name,age)
指定引數型別的路由
@app.route('/show3/<name>/<int:age>')
#在瀏覽器輸入 localhost:5000/show1/xxx/data (data必須為數字)進行訪問
def show3(name,age):
    return '<h1>姓名為:%s,年齡為:%d</h1>' % (name,age)

多URL的路由

@app.route('/')
@app.route('/index')
#在瀏覽器輸入 localhost:5000/或者localhost:5000/index 進行訪問
def index():
    return 'hello'

最後,來一個簡單的flask程式

from flask import Flask
#將當前執行得到的主程式構建成Flask的應用,以便接收使用者的請求,並給出響應
app = Flask(__name__)
#@app.route()Flask中的路由定義,定義使用者的訪問路徑
#/表示的是整個網站的根路徑
#def index() 表示匹配上@app.route()路徑後的處理程式
#檢視函式 :該類函式必須要有returnreturn後要給一個字串或響應物件
@app.route('/')
def index():
    return "<h1>This is my first flask app</h1>"

if __name__ == '__main__':
    #執行Flask應用(啟動Flask的服務),預設在本機開啟的埠號是5000.
    #debug=True,是將當前的啟動模式改為除錯模式(開發環境中建議使用除錯模式,生產環境中不允許使用)
    app.run(debug=True)

在網頁上輸入地址出現下圖結果。
在小長假這裡插入圖片描述
這是個人上課筆記和個人分析總結所得,如有錯誤望留言。