Flask的優(yōu)缺點(diǎn)
優(yōu)點(diǎn):Flask小而精坯癣,三方組件全
缺點(diǎn):穩(wěn)定性相對(duì)較差,三方組件版本問(wèn)題最欠,F(xiàn)lask一旦迭代,就可能造成三方組件不兼容的問(wèn)題惩猫。
flask三劍客 + 小兒子
Django flask
HTTPResponse : return "Hello World"
render : render_template
redirect : redirect
send_file("static/123.jpg") # 上傳文件
jsonify("{id: 1}") # Content-Type: application/json
request
request.form Form表單提交的數(shù)據(jù)芝硬,POSTrequest.args url中的參數(shù)request.data Content-Type無(wú)法解析的數(shù)據(jù),原始數(shù)據(jù)是字節(jié)流(b"")request.json Content-Type:application/json request.method 獲取請(qǐng)求方式request.path 路由地址/loginrequest.files 獲取文件對(duì)象
session - Flask-Session
from flask import session app.secret_key = '123' # 如果遇到了 Must provide secret_key to use csrf錯(cuò)誤提醒,原因就是沒(méi)有設(shè)置secret_key ,在代碼中加上 session["user"] = "wjs"session存放在瀏覽器的cookie中默認(rèn)名稱是session 序列化的數(shù)據(jù)session.get("user") Flask-Session 一個(gè)三方組件from flask_session import Sessionfrom flask import session app.config["SESSION_TYPE"] = "redis"app.config["SESSION_REDIS"] = Redis實(shí)例Session(app) session["user"] = "wjs"session存放在瀏覽器的cookie中默認(rèn)名稱是session -- UUIDsession.get("user")
Flask實(shí)例化配置轧房,對(duì)象配置:
實(shí)例化: Flask(__name__, template_folder="模板路徑", static_folder="靜態(tài)文件路徑", static_url_path="/靜態(tài)文件訪問(wèn)路徑") 對(duì)象配置: app.debug = True app.config["DEBUG"] = True class FlaskSetting(object): DEBUG = True app.config.from_object(FlaskSetting)
藍(lán)圖 Blueprint
from flask import Blueprintblue = Blueprint("blue",__name__,template_folder="模板路徑", static_folder="靜態(tài)文件路徑", static_url_path="/靜態(tài)文件訪問(wèn)路徑",url_prefix="/blue") @blue.route("/blue01")def blue01(): return "123" 記得在app中注冊(cè)藍(lán)圖app: app.register_blueprint(blue)
特殊裝飾器:
@app.template_global() # 全局函數(shù)def ab(a,b): return a + b{{ab(1,2)}} # 調(diào)用ab函數(shù) @app.template_filter() # 偏函數(shù)def abc(a, b, c): return a + b + c{{2|abc(2,2)}} # 調(diào)用abc函數(shù) @app.before_request # 請(qǐng)求進(jìn)入視圖函數(shù)之前def be1(): return None # 跳過(guò) @app.after_request # 視圖函數(shù)結(jié)束之后拌阴,返回客戶端之前def af1(response): return response 正常: 請(qǐng)求-be1-be2-be3-af3-af2-af1-客戶端 # be是按照代碼執(zhí)行順序走,af是按照代碼執(zhí)行順序的反序走 異常: 請(qǐng)求-be1-be2-af3-af2-af1-客戶端 # 斷掉以后be斷掉后面的就不走了奶镶,af還是都走 @app.errorhandler(404) # 重定義錯(cuò)誤信息def error404(args): # args存放的是錯(cuò)誤信息 return render_template("error.html", args=args)
Flask CBV
from flask import views class Login(views.MethodView): # methods = ["POST"] def get(self): pass def post(self): pass app.add_url_rule("/login",endpoint=None,view_func=Login.as_view(name="login"),methods=["POST"])
WTForms
simple,core
flash
from flask import flash,get_flashed_messages flash("66","tag") get_flashed_messages(category_filter=["tag"])