zoukankan      html  css  js  c++  java
  • 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"])
    

      

      

  • 相关阅读:
    yii required 字段去除*号
    shtml用include加载文件,apache开启SSI,及shtml压缩
    门户站点用html或shtml文件格式的原因
    Apache配置shtml
    数据库迁移工具
    SQL SERVER2005 级联删除
    MySql级联删除和更新
    js只允许输入数字和小数点
    表格中的数据为空时,td的边框不显示
    MYSQL: Cannot delete or update a parent row: a foreign key constraint fails
  • 原文地址:https://www.cnblogs.com/wjs521/p/10145078.html
Copyright © 2011-2022 走看看