flask基本介紹
Flask
Flask誕生於2010年,是Armin ronacher(人名)用 Python 語言基於 Werkzeug 工具箱編寫的輕量級Web開發框架。
Flask 本身相當於一個核心,其他幾乎所有的功能都要用到擴充套件(郵件擴充套件Flask-Mail,使用者認證Flask-Login,資料庫Flask-SQLAlchemy),都需要用第三方的擴充套件來實現。比如可以用 Flask 擴充套件加入ORM、窗體驗證工具,檔案上傳、身份驗證等。Flask 沒有預設使用的資料庫,你可以選擇 MySQL,也可以用 NoSQL。
其 WSGI 工具箱採用 Werkzeug
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