1.統一處理
**示例:
from flask import flask, session, g
'test'
# 需求1: 所有檢視都需要獲取使用者身份
# 解決辦法: 用鉤子函式進行封裝 減少**冗餘
defprepare()
:# 必須使用g變數來傳遞資料, 使用全域性變數不能記錄併發的多個請求資料
g.name = session.get(
'username'
)'/'
)def
index()
:if g.name:
return
"歡迎回來, %s"
% g.name
else
:return
'首頁'
'/demo1/'
)def
demo1()
:print
(g.name)
return
'demo1'
'/login'
)def
login()
:"""登入"""
session[
'username']=
'zs'
return
'登入成功'
if __name__ ==
'__main__'
:true
)
2.訪問限制
**示例:
from flask import flask, session, g, abort
from functools import wraps
'test'
defprepare()
: g.name = session.get(
'username'
)'/'
)def
index()
:if g.name:
return
"歡迎回來, %s"
% g.name
else
:return
'首頁'
'/login'
)def
login()
:"""登入"""
session[
'username']=
'zs'
return
'登入成功'
# 需求2: 對部分檢視進行訪問限制 如個人中心必須登入才能訪問
# 解決方案: 使用裝飾器封裝訪問限制 減少**冗餘
deflogin_required
(f):
# f = user
def(
*args,
**kwargs)
:# 獲取函式名
print
if g.name:
# 使用者已登入
return f(
*args,
**kwargs)
# 正常訪問檢視函式
else
:# 使用者未登入
abort(
401)
# 400 語法/引數錯誤 401 未認證 403 已認證, 許可權不足 404 資源不存在 405 請求方式不支援 500 伺服器錯誤
'/user'
)@login_required # user = login_required(user)
defuser()
:"""個人中心"""
return
'訪問 %s 的個人中心'
% g.name
if __name__ ==
'__main__'
:print
true
)
補充:
functools.wraps
**示例:
# 使用裝飾器封裝訪問限制
deflogin_required
(f):
# f = user
@wraps(f)
# 設定該裝飾器後, 可以讓閉包函式使用原函式名, 避免函式標記出現衝突(函式標記是根據函式名來生成的)
def(
*args,
**kwargs)
:if g.name:
return f(
*args,
**kwargs)
else
: abort(
401)
flask 請求鉤子 上下文 綜合認證
1.請求鉤子 請求鉤子就是就是在客戶端發起請求的時候,對各個階段進行監聽和處理,這可以完成一些統一的處理,減少 冗餘。類似於中介軟體或前後置 主要有以下四種請求鉤子 before first request before request after request teardown request ...
Flask 框架的學習
前端時間學習了下flask,準備在這裡記錄一下flask的基礎入門。首先先安裝 pip install flask flask restful 之後建立乙個hello.py 匯入flask類 from flask import flask flask類接收乙個引數 name 裝飾器的作用是將路由對映...
flask框架中增刪改查
資料庫操作 新增資料 根據資料建立模型物件 db.session.add 物件 db.session.commit 更新根據條件找到對應的物件 直接修改物件的屬性值即可 db.session.commit 刪除物理刪除 根據條件找到對應的物件 db.session.delete 物件 db.sess...