Flask.3

Flask四大内置对象

  • request
  • session
  • g
    • global 全局
    • 帮助我们实现全局数据共享
      • 生命周期:在单次请求中
  • config 或者 app
    • 就是当前运行的项目
    • 获取当前运行的App的位置
    • 应该是存在价值和意义的

钩子函数

 

  • 编程模型

    • OOP

      • 面向对象编程

    • POP

      • 面向过程编程

    • IOP

      • 面向接口编程

    • AOP

      • 面向切面编程

  • 动态介入到既有流程中

  • 重要概念

    • 切点

      • 请求前

      • 请求后

      • 请求异常

    • 切面

      • 请求前

        • request

      • 请求后

        • request

        • response

      • 请求异常

        • exception

        • request

  • Flask中就叫做钩子(切点)

  • 蓝图和app上都有钩子函数

    • app上的钩子优先级更高

    • 蓝图只能处理本蓝图内容的信息

缓存

  • 减少磁盘io可以大幅度提升服务器性能

  • 实现

    • flask-cache

    • flask-caching

url_for

 

  • 反向解析

  • 动态获取地址

  • url_for("视图函数名字" )    **一定是函数名字**

    • 可以视图函数上的路由

    • 带参

      • url_for("视图函数名字", key=value, key=value)

  • static

    • url_for("static", filename="xxx")

    • @app.route("/static/path:filename")

    • def static(filename):

  • 在app中是以上所说

  • 在蓝图中前面要拼接蓝图的名字

    • url_for("蓝图名.函数名")

    • users_blue = Blueprint("users_blue", __name__, url_prefix="/users")
      
      #举例
      if user.save():
          return redirect(url_for('users_blue.login')). #重定向到users_blue的login函数
      else:
          return "注册失败"

       

模型

  • 模型默认一定会在数据库中产生映射

 

  • 如果模型不想在数据库中产生映射

 

    • 需要模型是抽象的

    • 抽象的模型不会有具体的实例

    • __abstract__ =True

#定义一个基类函数,让其他函数继承自它
#但映射时还会产生这个函数对象的表,所以加上__abstract__ = True,变为抽象模型
class BaseModel(db.Model):
    __abstract__ = True
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)

 

文件上传(图片)

  • 文件不能一次传输

  • 需要打碎,然后再拼装

  • 中间需要对应的规则

    • enctype

enctype="multipart/form-data"

 

 

 

posted @ 2019-05-24 17:34  百超  阅读(130)  评论(0编辑  收藏  举报