Flask

Flask(本身感受的重點標註起來)前端

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

 

Flask 自己至關於一個內核,其餘幾乎全部的功能都要用到擴展(郵件擴展Flask-Mail,用戶認證Flask-Login,數據庫Flask-SQLAlchemy,都須要用第三方的擴展來實現。好比能夠用 Flask 擴展加入ORM、窗體驗證工具,文件上傳、身份驗證等。Flask 沒有默認使用的數據庫,你能夠選擇 MySQL,也能夠用 NoSQLweb

 

WSGI 工具箱採用 Werkzeug(路由模塊),模板引擎則使用 Jinja2。這兩個也是 Flask 框架的核心。數據庫

 

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

 

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

 

Flask經常使用擴展包:flask

 

Flask-SQLalchemy:操做數據庫;服務器

Flask-script:插入腳本;app

Flask-migrate:管理遷移數據庫;框架

Flask-SessionSession存儲方式指定;

Flask-WTF:表單;

Flask-Mail:郵件;

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

Flask-Login:認證用戶狀態;

Flask-OpenID:認證;

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

Flask-Bootstrap:集成前端Twitter Bootstrap框架;

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

Flask-Admin:簡單而可擴展的管理接口的框架

 

Flask有兩大核心:WerkzeugJinja2

   - Werkzeug實現路由、調試和Web服務器網關接口

   - Jinja2實現了模板。

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

   - 其內部實現了不少Web框架底層的東西,好比requestresponse對象;

   - 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

相關文章
相關標籤/搜索