models2

一对多

模型定义

  • 外键ForeignKey定义在’多’的一方
  • relationship字段定义在’一’的一方
  • backref参数: 反向引用的关联关系

查询

  • 一查多:’一’的对象.relationship字段
  • 多查一:’多’的对象.backref字段

多对多

模型定义

  • 中间表的定义: db.Table
  • relationship字段定义在任何一方都可以
  • secondary参数指定关联的中间表
  • backref参数: 反向引用关系

查询

  • 通过relationship所在字段的模型查询另外一个模型的数据
    • relationship字段所在的模型对象.relationshop字段,查询的结果为另外一个模型的列表
  • 查询relationship字段所在模型数据, 使用backref参数

添加/删除

  • append(对象)
  • remove(对象)

lazy

  • lazy定义SQLAlchemy何时从数据库加载数据
  • 默认lazy为True

钩子函数

请求之前: before_request
    - 不要写return,如果写return将直接响应内容给浏览器
    - 多个before_request装饰的函数将依次调用
请求之后: after_request
    - 一定要写return response
    - 程序正常执行情况下才会调用
    - 多个after_request装饰的函数将倒序依次执行
请求之后: teardown_request
    - 不管异常是否处理,无论如何都会执行
    - 程序不管是否出错,都会执行
    - 配置:app.config['PRESERVE_CONTEXT_ON_EXCEPTION'] = False

异常

  • 引入: from flask import abort
  • 抛出异常: abort(500)
  • 捕获异常: @app.errorhandlers(500)

flask-wtf

1.表单定义
2.页面中表单的渲染
    - form.username:解析的结果为input标签
    - form.username.label: 解析的结果为定义表单字段的第一个参数
    - form.csrf_token: 解析的结果为随机字符串
    - form.username(style="color:red;"): 添加自定义的样式
3.校验
    - validator_on_submit(): 校验成功返回True,否则False
    - 校验失败: form.errors
4.密码加密/解密
    - 加密: generate_password_hash()
    - 解密:check_password_hash()


  转载请注明: 微笑看你 models2

 上一篇
MySQL MySQL
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。 端口是IP地址区分不同服务的 Docker —- 屏蔽硬件和软件的差异 虚拟机(Vi
2018-10-16
下一篇 
Python Python
学习是一件庄严而又神圣的事情,贵在坚持 不断地积累,才能体会到其中的乐趣 Python第1天 前端页面 = 标签(内容) + CSS(显示) + JavaScript(行为) JavaScript = ECMAScript + BOM(wi
2018-10-15
  目录