flask 知識點總結

2021-08-08 21:43:05 字數 3005 閱讀 4173

flask框架學習總結

flask的特點

輕量、簡潔、擴充套件性強

常用的擴充套件包:wtf、sqlalchemy、login、script、migrate、mail

建立虛擬環境:mkvirtualenv 建立虛擬環境,workon 進入虛擬環境,deactivate退出虛擬環境

刪除虛擬環境:rmvirtualenv 

安裝依賴包:pip  install -r requirements.txt

生成依賴包:pip freeze > requirements.txt

檢視flask基本程式的實現:

1、建立應用程式例項,引數__name__的主要作用是為了確定程式所在目錄

2、裝飾器路由的定義和使用,可以指定請求方法

動態路由引數:語法格式:

正則url:werkzeug的routing模組實現路由訪問,優化訪問、限制訪問

重定向:當專案檔案或目錄發生改變的時候,建議使用url_for()

redirect()和url_for()

redirect()接收的引數,是具體的url

url_for()接收的檢視函式名

狀態碼:return 'string',自定義的狀態碼

自定義狀態碼,實現前後端的資料互動,不遵循http協議定義的狀態碼

abort函式丟擲的狀態碼必須符合http協議

errorhandler()會接收abort函式丟擲的狀態碼,一般用來處理錯誤頁面

狀態保持:http協議的無狀態,cookie和session的具體描述

make_response()返回的物件可以實現cookie的設定和獲取

請求上下文:request和session

request的主要作用:獲取客戶端和伺服器互動過程中引數資訊,form/data/files/args/get_json/headers

session:儲存客戶端和伺服器互動過程中的使用者資訊

g變數用來臨時儲存使用者資訊

請求鉤子:會在每次客戶端和伺服器互動前或以後執行

after_request:在每次請求後執行,用來實現前後端資料互動格式

裝飾器路由的實現:

rule(構造具體的url)

map(儲存不同的和url和檢視函式的對映)

mapadapter(實現具體的url和檢視函式的繫結關係)

flask_scripte:擴充套件命令列,以python 檔名.py runserver的形式啟動程式

自定義ip和埠,和migrate配合實現資料庫遷移

模板模板的就是檔案,渲染檢視函式返回的響應資料

變數 }

語句 過濾器:格式化輸出資料

}過濾器可以自定義

表單wtf:flask_wt擴充套件,實現表單資料的驗證

密碼比較、資料是否存在、驗證郵箱、驗證字串長度

使用表單驗證器,必須設定secret_key,驗證器要驗證資料,必須在表單中新增表單物件.csrf_token()

巨集、繼承、包含:

micro:相當於python中的函式,一般用來實現模板頁面的動態功能

extends:相當於**替換,一般用來實現頁面中固定不變的部分,比如頂部選單等

include:真正實現頁面的復用,一般用來實現重複頁面的功能

繼承的使用注意事項:

模板不支援多繼承,繼承的語句結束要指定結束的語句塊標記

flask中的特殊變數和方法:在檢視和模板中都可以使用

request、url_for()、config、flash訊息閃現

資料庫flask_sqlalchemy實現orm抽象,不用面對具體的sql語句

實現資料庫的連線:

建立資料庫例項:db = sqlalchemy()

定義模型類:

需要繼承自db.model

定義字段需要使用db.column()方法

backref反向引用實現一對多或多對一的查詢

基本的查詢語句:

get接收id值

filter_by(id=user_id).first()使用精確查詢,需要加上查詢執行器

filter模糊查詢,order_by排序

paginate分頁操作

in_/notin_/and/

資料庫遷移:flask_migrate

python 檔名.py db init  建立遷移檔案

python 檔名.py db migrate 建立遷移指令碼

python 檔名.py db ungrade 更新資料表

python 檔名.py db downgrade 回退資料表

回退資料庫前建議使用history命令檢視歷史版本號

flask_mail:傳送郵件

郵件伺服器、埠、傳輸協議、郵箱名、授權碼

藍圖、測試、部署

藍圖:模組化應用,主要用來實現不同檔案中的檢視函式和路由之間的繫結

建立藍圖物件:api = blueprint('api',__name__),第乙個api是藍圖物件,第二個api是藍圖名稱;

使用藍圖路由

註冊藍圖路由到應用程式例項上

測試:驗證預期結果和實際結果之間的差距

單元測試:具體功能模組的測試,單元測試的本質是assert斷言**

實現單元測試,需要繼承自unittest.casttest

單元測試**中,測試類,必須定義兩個方法:

setup()實現測試前的準備工作,比如資料庫連線,建立程式例項、模擬客戶端等

teardown()實現測試後的掃尾工作,比如清楚會話物件、刪除測試資料等

測試**必須以test開頭

部署:gunicorn -w 開啟的程序數 -b 繫結的ip和port 啟動檔案:應用程式例項名稱

反向**:客戶端並不知道訪問的是哪台伺服器

正向**:伺服器並不知道是哪個客戶端來訪問

restful api

表現層狀態轉換

網域名稱、版本、路徑、請求方法、過濾資訊、響應資料、狀態碼、鏈結關聯資源、錯誤資訊、資料的互動格式json、url中不能出現動詞,名詞建議使用複數

flask小知識點總結

request.form用來接受post請求引數,request.args接受get請求引數。以requests.form key 若值不存在,丟擲keyerror,會直接返回400錯誤,可以手動捕獲。如下 def login try username request.args name passw...

flask相關知識點2

flask primary key 主鍵 autoincrement 自動增量 unique 獨特的 index 索引 nullable 可空的 default 預設 foreignkey 外來鍵 integer smilllnteger biginteger float numeric strin...

知識點總結

1,迴圈中的中斷 continue 跳出此次迴圈,繼續for迴圈 break 跳出當前for迴圈 return 跳出當前方法 2,字串的操作 componentseparatedbystring stringbyreplacingoccurencesofstring withstring iskin...