Flask总结

Flask的优缺点

优点:Flask小而精,三方组件全

缺点:稳定性相对较差,三方组件版本问题,Flask一旦迭代,就可能造成三方组件不兼容的问题。

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表单提交的数据,POST
request.args     url中的参数
request.data     Content-Type无法解析的数据,原始数据是字节流(b"")
request.json     Content-Type:application/json

request.method   获取请求方式
request.path       路由地址/login
request.files        获取文件对象  

session -  Flask-Session

from flask import session

app.secret_key = '123'  # 如果遇到了 Must provide secret_key to use csrf错误提醒,原因就是没有设置secret_key ,在代码中加上

session["user"] = "wjs"
session存放在浏览器的cookie中默认名称是session   序列化的数据
session.get("user")


Flask-Session  一个三方组件
from flask_session import Session
from flask import session

app.config["SESSION_TYPE"] = "redis"
app.config["SESSION_REDIS"] = Redis实例
Session(app)

session["user"]  = "wjs"
session存放在浏览器的cookie中默认名称是session -- UUID
session.get("user")

Flask实例化配置,对象配置:

实例化:
    Flask(__name__,
        template_folder="模板路径",
        static_folder="静态文件路径",
        static_url_path="/静态文件访问路径")
    对象配置:
        app.debug = True
        app.config["DEBUG"] = True
        class FlaskSetting(object):
            DEBUG = True
        app.config.from_object(FlaskSetting)  

蓝图 Blueprint

from flask import Blueprint
blue = Blueprint("blue",__name__,template_folder="模板路径",
        static_folder="静态文件路径",
        static_url_path="/静态文件访问路径",url_prefix="/blue")

@blue.route("/blue01")
def blue01():
    return "123"

记得在app中注册蓝图
app:
    app.register_blueprint(blue)  

特殊装饰器:

  

@app.template_global()   # 全局函数
def ab(a,b):
    return a + b
{{ab(1,2)}}  # 调用ab函数


@app.template_filter()  # 偏函数
def abc(a, b, c):
    return a + b + c
{{2|abc(2,2)}}  # 调用abc函数


@app.before_request  # 请求进入视图函数之前
def  be1():
    return None   # 跳过

@app.after_request   # 视图函数结束之后,返回客户端之前
def af1(response):
    return response

正常: 请求-be1-be2-be3-af3-af2-af1-客户端    # be是按照代码执行顺序走,af是按照代码执行顺序的反序走

异常: 请求-be1-be2-af3-af2-af1-客户端    # 断掉以后be断掉后面的就不走了,af还是都走

@app.errorhandler(404)  # 重定义错误信息
def error404(args):   # args存放的是错误信息
    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"])

  

  

原文地址:https://www.cnblogs.com/wjs521/p/10145078.html