Flask 自己至關於一個內核,其餘幾乎全部的功能都要用到擴展(郵件擴展Flask-Mail,用戶認證Flask-Login,數據庫Flask-SQLAlchemy),都須要用第三方的擴展來實現。好比能夠用 Flask 擴展加入ORM、窗體驗證工具,文件上傳、身份驗證等。Flask 沒有默認使用的數據庫,你能夠選擇 MySQL,也能夠用 NoSQL python
Flask 是python三大web框架之一,比之其餘兩大框架django和tornado而言,它更加的輕量化,開發效率更高,是入門web框架的首選。web
Flask-Admin:簡單而可擴展的管理接口的框架數據庫
Flask有兩大核心:Werkzeug和Jinja2django
- Werkzeug實現路由、調試和Web服務器網關接口json
- Jinja2實現了模板。flask
Werkzeug是一個遵循WSGI協議的python函數庫服務器
- 其內部實現了不少Web框架底層的東西,好比request和response對象;app
- 與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