1. 程式人生 > >1.7 Flask

1.7 Flask

Django
Model ORM Session
ModelForm
amdin
大而全
浪費資源

Flask
Session
小而精,三方元件全
穩定性相對較差

Tornado
非同步IO 非阻塞 原生websocket
乾淨

Sanic HOT

from flask import Flask
app = Flask(name)
app.run()

from flask import Flask
app = Flask(name)

@app.route("/")
def index():
return "Hello World"

app.run()

Response三劍客:
HttpResponse: return "Hello World" 返回字串至客戶端

from flask import render_template
render : return render_template("login.html")
與Django中的 render 使用一致 返回模板由瀏覽器渲染

from flask import redirect
redirect: return redirect("/login") # 302
跳轉,重定向URL

Flask中小兒子:
1.from flask import jsonify
retrun jsonify({name:111}) # 返回json標準的字串
Content-Type:application/json

2.from flask import send_file
return send_file(path)

開啟檔案並返回檔案內容(自動識別檔案格式)

falsk 中的 request
get post delete put

django
def django(req):
return HttpResponse("hello")

from flask import request
request.method # 請求方式
request.form # 存放FormData中的資料 to_dict 序列化成字典
request.args # 獲取URL中的資料 to_dict 序列化成字典
request.url # 訪問的完整路徑
request.path # 路由地址
request.host # 主機地址
request.values # 獲取 FormData and URL中的資料 不要用to_dict
request.json # 如果提交時請求頭中的Content-Type:application/json 字典操作
request.data # 如果提交時請求頭中的Content-Type 無法被識別 將請求體中的原始資料存放 byte
request.cookies # 獲取Cookie中的資料
request.headers # 獲取請求頭
request.files # 序列化檔案儲存 save()

Jinja2
{{}} 引用變數 執行函式
{%%} 邏輯程式碼
|safe Markup 安全標籤字串
@app.template_global()
@app.template_filter()
{% macro create_input(na,ty) %}
{{ na }} :
{% endmacro %}
{{ create_input("username","text") }}

Flask 中的 Session

app.secret_key = "加密字串" # 用於序列化和反序列化 session資訊

由於Flask中預設Session 存放位置 - 客戶端的Cookies中
所以Session需要加密 用到 secret_key
請求進入檢視函式 帶上cookie 將Session從cookie序列化出來 通過secret_key 反序列化成字典
Flask-Session

今日作業:
基於Session裝飾器,裝飾至少2個檢視函式