蓝图、模型与CodeFirst

  • flask的层级关系

    • image.png
    • 配置文件,插件都是要注册到flask的核心对象上的

    • 路由注册到蓝图上,但是蓝图需要注册到flask的核心对象app上,使用app.register_blueprint()注册

    • 使用蓝图注册的路由,endpoint不再是视图函数的名称,而是在视图函数名称前面加上了蓝图的名字,例如 web.search

    • 蓝图不是为了给我们拆文件的,而是用于大型项目中拆分模块的

  • request对象

    • request是flask帮我们构建和生成的

    • request对象下的args属性,是dict的一个子类,是一个不可变的字典,可以使用to_dict()转变为普通的字典类型

    • request的实现是一个代理模式的实现,如果要使用request的话,必须保证request所在的方法中必须是flask的thhp请求触发的或者是视图函数触发的,否则得不到你想要的结果。

    • 使用条件是,flask的上下文环境中

  • WTForms插件

    • 分层,在验证层进行参数的校验

    • 验证客户端传过来的参数

class SearchForm(Form):

    q = StringField(validators=[DataRequired(), Length(min=1, max=30)])  # 验证器,可以自定义验证器

    page = IntegerField(validators=[NumberRange(min=1, max=99)],default=1)
  • 配置

    • 将数字密码这种比较机密的信息放到一个单独的配置文件中,还有生产环境和开发环境不一样的参数

    • 生产环境和开发环境几乎一样的参数分到一个文件中写

  • 数据表创建方式

    • database first

    • model first 数据管理员很喜欢用

    • code first

  • 模型层

    • sqlalchemy第三方库, flask对此进行了封装,有Flask-sqlalchemy

    • 插件都需要注册到flask的核心对象上,db.init_app(app)

    • 配置项,名称是不能随便改的,SQLALCHEMY_DATABASE_URI

    • image.png
    • sqlalchemy支持分布式数据库

    • db.create_all(app=app)创建到数据库中

    • Code first 专注业务模型的设计,而不是专注于数据库的设计

    • 业务逻辑应该写到model层

    • Code First关注于数据表是怎么创建的,解决的是创建数据的问题,ORM对象关系映射,包含的层面比较广泛,数据怎么查询,删除更新,希望我们通过操作模型间接的操作数据库

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容