1. 程式人生 > >Flask框架基礎功能

Flask框架基礎功能

Go 關系 code any 開發 django pat bug urn

引言

本文簡單匯總Flask框架幾大基礎功能,包括:

  • 路由系統
  • 模板
  • 數據庫
  • 幾種常用Flask庫

一個簡單的Flask事例

Flask是一個基於Python,依賴Jinja2模板和WSGI服務的框架。當我們訪問一個URL時,瀏覽器發出HTTP請求,WSGI接收到我們的請求,交給Flask框架提供的一系列功能來處理請求,並返回HTTP響應給瀏覽器(客戶端)。
與Django相比,Flask作為一個微框架,不會面面俱到,但可以通過安裝擴展來增加提供的服務,可定制性很強。
下面是一個簡單的Flask事例,當我們訪問http://127.0.0.1:5000時,瀏覽器會顯示hello flask

from flask import Flask


app = Flask(__name__)

@app.route(‘/‘)
def index():
    return ‘<h1>hello, flask</h1>‘

if __name__ == ‘__main__‘:
    app.run(host=‘127.0.0.1‘, port=5000)

上述程序我們創建了一個app的Flask實例,將根目錄與index路由函數函數綁定,並運行在localhost:5000上。
運行上述程序,我們可以直接python 程序名運行。如果用於開發環境,還有其他方法來運行,Flask源碼裏面的註釋寫是很清楚,需要設置FLASK_DEBUG環境變量為程序名,然後就可以通過flask run來運行該服務器。

路由系統

上面的程序中,@app.route(‘/‘)是一個裝飾器。python裏面裝飾器常常用來將被裝飾的函數註冊為某事件的回調函數。具體來說,當Web瀏覽器請求/時,會觸發index這個函數,並將index函數的返回值作為響應返回給瀏覽器。不同的URL可以有相同的視圖處理函數,換句話說,一個函數可以對應多個URL。這在Django的MTV模式中,對應其中的views。

常用的路由系統有以下五種:

  • @app.route(‘/usr/
  • @app.route(‘/usr/
  • @app.route(‘/usr/
  • @app.route(‘/usr/
  • @app.route(‘/usr‘, methods=[‘GET‘, ‘POST‘])

以下是對應關系:

DEFAULT_CONVERTERS = {
    ‘default‘:          UnicodeConverter,
    ‘string‘:           UnicodeConverter,
    ‘any‘:              AnyConverter,
    ‘path‘:             PathConverter,
    ‘int‘:              IntegerConverter,
    ‘float‘:            FloatConverter,
    ‘uuid‘:             UUIDConverter,
}

可以看到不支持正則表達式。關於這點,可以參考Segment Fault的回答。

To Be continue

Flask框架基礎功能