Flask 基礎總結回顧

1.Flask Request

# from flask import request
        request.form # 獲取FormData中的數據
        request.args # 獲取URL中的數據
        request.data # 獲取原始請求體數據 content-type 中沒有Form字眼 b""
        request.json # 獲取 content-type:application/json 字典
        request.files # 獲取請求中的文件數據 FileStorage 對象 save(文件路徑)
        request.method # 獲取請求方式 GET POST DELETE PUT
        request.path # 獲取請求路徑 路由地址
        request.host_url # 獲取請求HOST地址
        request.cookies # 獲取Cookie對象
        request.headers # 獲取請求頭中的數據

2.Flask Response

1."" HTTPResponse
2.render_templates(模板名稱) # 默認模板存放路徑 templates
3.redirect("/路由地址") # 響應頭中 location:http://url/路由地址
Flask 特殊:
4.send_file("文件路徑")
# 打開並返回文件件內容 自動識別文件類型 響應頭 Content-Type:文件類型
5.jsonify(dict)
# 返回標註的JSON格式字符串 響應頭 Content-Type:application/json

3.Flask 中的 Session

from flask import session
application.secret_key = "$%^&*()&^%$%^&*"
app.config["SECRET_KEY"] = "$%^&*()&^%$%^&*"
session["user"] = 123

if session.get("user") ---  session["user"] KeyError

交由客戶端保管機制
1.session["user"] = "123"
2.序列化session 字符串
3.經過 SECRET_KEY 加密字符串 加密算法
4.cookie中加入 {SESSION_COOKIE_NAME}:SECRET_KEY 加密字符串
5.返回客戶端

反:
1.Cookie獲取{SESSION_COOKIE_NAME}:SECRET_KEY
2.經過 SECRET_KEY 解密 字符串 解密算法
3.反序列化 字符串 字典 - session
4.session.get("user")

4.路由

@app.route("/")
def index():
*endpoint app中是惟一的 路由和視圖函數之間的橋樑
*methods 容許請求的方式 ["GET","POST","DELETE","PUT"]
**動態參數路由
"/index/<page>"
"/look/<xiaojiejie>/<picture>"
def look(xiaojiejie,picture):

defaults = {nid:1} # 視圖的默認參數
strict_slashes # 是否嚴格遵循路由匹配規則 "/結尾/" True False
redirect_to # 永久重定向 301 308

app.add_url_rule()

5.初始化

app = Flask(__name__)
template_folder # 模板存放路徑 os.path.join(root_path,template_folder)
static_folder # 靜態文件存放路徑
static_url_path # 靜態文件訪問路徑 "/{static_folder}"
-import_name # __name__ 鎖定當前文件的目錄 保證文件惟一
-root_path # 當前application的所在目錄 由import_name自動建立
host_matching # 主機位 匹配 config.server_name
static_host # 遠程靜態文件服務 "{static_host}/{static_folder}"
subdomain_matching # 支持子域名的主機位匹配
instance_path # 另外一個Flask示例導入
instance_relative_config # 另外一個FlaskConfig導入

6.配置

app.config Flask Config對象
app.debug = True
app.config["DEBUG"] = True
DEBUG       開發環境 log級別低         重啓代碼錯誤透傳
TESTING     測試環境 log級別較高    
SECRET_KEY  開啓Session序列化
SESSION_COOKIE_NAME 在Cookie Session名稱
SESSION_COOKIE_HTTPONLY 是否只在HTTP請求下開啓 session
JSONIFY_MIMETYPE 更改 jsonify 時的 Content-Type
    
class DebugConfig(object):
            DEBUG = True
            SECRET_KEY = "%^&*()_"  
app.config.from_object(DebugConfig)

7.藍圖

藍圖就是不能Run的Flask示例
藍圖中沒有Config對象
藍圖的做用 隔離應用 隔離路由

bp = Blueprint("藍圖名稱全Flask示例惟一",__name__)
@bp.route("application路由一致",url_prefix="/url前綴")
def bp_index():
app.register_blueprint(bp#藍圖對象)

8.特殊裝飾器

@app.before_request # 在請求進入視圖函數以前
@app.after_request # 在響應客戶端以前
    正常:be1 - be2 - vf - af2 - af1
    異常:be1 - af2 - af1
    
@app.errorhandler(404) # 重定義錯誤信息
def error404(ErrorMessage):
    return 5返回
    
@app 但是 @bp , @bp 當前的裝飾器只生效當前 bp

9.CBV

試圖類
from flask import views 導入CBV的視圖基類
class Login(views.MethodView): # 繼承CBV視圖基類的最高類
def get(self):
    return "GET 200 OK!"
def post(self):
    return "POST 200 OK!"
相關文章
相關標籤/搜索