1. 程式人生 > >flask基本介紹

flask基本介紹

Flask

 

Flask誕生於2010年,是Armin ronacher(人名)用 Python 語言基於 Werkzeug 工具箱編寫的輕量級Web開發框架。

 

Flask 本身相當於一個核心,其他幾乎所有的功能都要用到擴充套件(郵件擴充套件Flask-Mail,使用者認證Flask-Login,資料庫Flask-SQLAlchemy),都需要用第三方的擴充套件來實現。比如可以用 Flask 擴充套件加入ORM、窗體驗證工具,檔案上傳、身份驗證等。Flask 沒有預設使用的資料庫,你可以選擇 MySQL,也可以用 NoSQL

 

其 WSGI 工具箱採用 Werkzeug

(路由模組),模板引擎則使用 Jinja2。這兩個也是 Flask 框架的核心。

 

Flask 是python三大web框架之一,比之其他兩大框架django和tornado而言,它更加的輕量化,開發效率更高,是入門web框架的首選。

 

同類的python框架還有 bottle  web.py

 

Flask常用擴充套件包:

 

Flask-SQLalchemy:操作資料庫;

Flask-script:插入指令碼;

Flask-migrate:管理遷移資料庫;

Flask-Session:Session儲存方式指定;

Flask-WTF:表單;

Flask-Mail:郵件;

Flask-Bable:提供國際化和本地化支援,翻譯;

Flask-Login:認證使用者狀態;

Flask-OpenID:認證;

Flask-RESTful:開發REST API的工具;

Flask-Bootstrap:整合前端Twitter Bootstrap框架;

Flask-Moment:本地化日期和時間;

Flask-Admin:簡單而可擴充套件的管理介面的框架

 

Flask有兩大核心:Werkzeug和Jinja2

   - Werkzeug實現路由、除錯和Web伺服器閘道器介面

   - Jinja2實現了模板。

Werkzeug是一個遵循WSGI協議的python函式庫

   - 其內部實現了很多Web框架底層的東西,比如request和response物件;

   - 與WSGI規範的相容;支援Unicode

   - 支援基本的會話管理和簽名Cookie

   - 整合URL請求路由等。

Werkzeug庫的 routing 模組負責實現 URL 解析。不同的 URL 對應不同的檢視函式,routing模組會對請求資訊的URL進行解析,匹配到URL對應的檢視函式,執行該函式以此生成一個響應資訊。

routing模組內部有:

Rule

   用來構造不同的URL模式的物件,路由URL規則

 

 

安裝flask

pip install Flask

 

列出pip已經安裝好的模組

pip freeze

 

三種匯入配置檔案的方式:

 

# 配置物件,裡面定義需要給 APP 新增的一系列配置

class Config(object):

DEBUG = True

 

 

# 從配置物件中載入配置

app.config.from_object(Config)

 

# 從配置檔案中載入配置

app.config.from_pyfile('config.ini')

 

#由環境變數裡面來載入配置

app.config.from_envvar('app_config')

 

路由配置,指定methods方法,返回json資料

 

@app.route('/demo4',methods=['GET', 'POST'])

def demo4():

    json_dict = {

        "user_id": 10,

        "user_name": "laowang"

    }

return jsonify(json_dict)

統一捕獲

#統一捕獲異常

@app.errorhandler(500)

def internal_server_error(e):

return '伺服器搬家了'

 

 

鉤子的四大方法

 

 

# 在第一次請求之前呼叫,可以在此方法內部做一些初始化操作

@app.before_first_request

def before_first_request():

    print("before_first_request")

 

 

# 在每一次請求之前呼叫,這時候已經有請求了,可能在這個方法裡面做請求的校驗

# 如果請求的校驗不成功,可以直接在此方法中進行響應,直接return之後那麼就不會執行檢視函式

 

@app.before_request

def before_request():

    print("before_request")

 

 

# 在執行完檢視函式之後會呼叫,並且會把檢視函式所生成的響應傳入,可以在此方法中對響應做最後一步統一的處理

@app.after_request

def after_request(response):

    print("after_request")

    return response

 

 

# 請每一次請求之後都會呼叫,會接受一個引數,引數是伺服器出現的錯誤資訊

@app.teardown_request

def teardown_request(e):

    print("teardown_request")

 

 

 

除錯介面的兩種方法

 

1 編寫python指令碼進行除錯

2 使用postman軟體進行除錯

 

 

 

虛擬環境概念

 

為了給專案提供獨立的安裝環境,防止多專案依賴衝突

 

 

 

虛擬環境安裝

pip install virtualenv

 

進入專案安裝虛擬目錄

virtualenv venv

 

進入命令目錄

cd ./venv/Scripts

 

啟用虛擬環境

activate

 

離開虛擬環境

deactivate