flask学习知识点总结

flask summary

environment

  1. 配置flask单独的虚拟环境
  2. pip3 install virtualenv
  3. virtualenv –no-site-packages -p python3路径 py3flask
  4. cd py3flask/Script
  5. activate 进入环境
  6. deactivate 退出环境

使用包列表

  1. 查看已经安装包 pip freeze
  2. flask
  3. flask-blueprint 蓝图,作用,将路由细分,分发,管理路由
  4. flask-Script 管理启动方式
  5. flask-DebugToolbar 查看测试一些东西
  6. flask-RESTful flask-marshmallow 管理表的工具
  7. flask-Session redis数据库的driver
  8. flask-SQLAlchemy mysql数据库
  9. jinja2
  10. PyMySQL mysql数据库的driver
  11. redis redis数据库

flask-blueprint 蓝图管理工具

  1. 一个app一个蓝图管理工具
  2. 配置,初始化,注册
  3. 使用,修饰器的使用

templates static 页面和静态文件

  1. 配置,注册
  2. 写到公共文件的settings里

参数

参数类型

  1. int
  2. float
  3. string
  4. path
  5. uuid

参数接收

/url/string:name/

访问方式 methods

PATH

  1. os.path.abspath(file) 当前文件的绝对路径
  2. os.path.dirname(path) path文件路径的上一级
  3. os.path.join(path, ‘文件名’) 配置路径

request方法

  • 页面到服务器
    1. args
    2. form
    3. files

response 响应

  • 服务器到页面,对于请求的反馈
    response = make_response

render_template redirect 跳转和重定向

  1. render_template(‘index.html’, stus=stus)
  2. redirect(‘/url’) 重定向url
  3. redirect(url_for(‘bluename.function_name’))

异常和错误

  1. abort(404) 抛出错误
  2. @app.errorhandler(404) 接收404错误
  3. 定义一个函数,返回到一个指定的页面

redis数据库的简单使用

  1. 配置,初始化,注册
  2. 启动
  3. 使用, 字典存储,字典取值
  1. response.set_cookie(‘ticket’, ticket, max_age=”, expires=”) 存储
  2. response.delete_cookie(‘ticket’) 删除

jinja2

基础函数

  1. for
  2. if
  3. loop

过滤器 |

  1. safe 展示样式
  2. striptags 消除样式
  3. length 长度
  4. trim 消除空格
  5. first 第一个字母
  6. last 最后一个字母
  7. upper 大写
  8. lower 小写
  9. capitalize 首字母大写

config 全局

macro 页面函数

  • 把多次使用的抽取,写成函数
    1. 定义
    2. 调用

mysql 数据库

两个包

  1. pip install flask-sqlalchemy
  2. pip install pymysql

配置,初始化,注册

  1. 初始化 db = SQLAlchemy
  2. 注册 SQLAlchemy(app)
  3. 配置
    1. app.config[‘SQLALCHEMY_DATABASE_URI’] = ‘mysql+pymysql://root:123456@localhost:3306/flask3’
    2. app.config[‘SQLALCHEMY_TRACK_MODIFICATIONS’] = False

数据库的创建 models.py

  1. 定义表结构
  2. 取别名
  3. 定义初始化方法,用于添加表数据

数据库的创建和删除

  1. db.create_all() 创建数据库里所有的表
  2. db.drop_all() 删除数据库里所有的表

表的 增

  1. 从页面拿到值
  2. 调用模型的初始化方法,给表里的字段赋值
    • db.session.add(str) add_all(list)
    • db.session.commit()

查询运算符

  • filter(模型名.字段.运算符(’xxx’)
  • filter(模型名.字段 运算符 值)
    1. lt le
    2. gt ge
    3. in_
    4. order_by
    5. limit(4).offset(3)
    6. first()
    7. and_ or_ not_

sql原生语句查询

  1. sql = ‘select * from student where ?=?’
  2. stus = db.session.execute(sql)

filter_by 查询

  1. stus = Student.query.filter_by(s_id=5)

filter 查询

  1. stus = Student.query.filter(Student.s_id=5)

get

  1. stu = Student.query.get(id) 传入主键id,若存在,返回该条信息,否则返回空

表的 改

方法一

  • Student.query.filter_by(s_id=6).update({‘s_name’: ‘哈哈’})
  • db.session.commit()

方法二

  • stu = Student.query.filter_by(s_id=6).first()
  • stu.s_name=’哈哈’
  • db.session.commit()

表的 删

  • db.session.delete(str)
  • db.session.commit()

分页 paginate

  • 写一个方法,在指定的页面,对指定的信息进行分页

方法定义

  1. page = int(request.args.get(‘page’,1)) 当前第几页
  2. perpage = int(request.args.get(‘per_page’,3)) 每页几条信息
  3. paginate = Student.query.order_by(‘s_id’).paginate(page,perpage, error_out=False) 数据绑定分页信息
  4. stus = paginate.items 总信息
  5. return …

方法使用,页面,jinja2

基本参数

  1. pages 总页数
  2. page 当前页数
  3. has_prev
  4. has_next
  5. next_num
  6. prev_num
  7. iter_pages 页数列表
  8. total 总数据条数

数据库表的扩展

一对一

一对多

创建

  1. 在多的表里创建关联字段,连接自己外键到多的表的主键
    • s_g = db.Column(db.Integer, db.ForeignKey(‘grade.g_id’), nullable=True) 表名,主键名
  2. 在一的表里创建关系,来访问与被访问的关键字
    • students = db.relationship(‘Student’, backref=’stu’,lazy=True) 类名

使用

  1. stus = grade.students
  2. grade = stu.stu

多对多

创建

  1. 中间表
    • sc = db.Table(‘sc’,
      db.Column(‘s_id’, db.Integer, db.ForeignKey(‘d4student.s_id’)),
      db.Column(‘c_id’, db.Integer, db.ForeignKey(‘course.c_id’))
      )
  2. 多, 多了个字段,secondary,关联中间表
    • students = db.relationship(‘Student’, secondary=sc, backref=’cou’)

使用,和普通表不一样

  1. 查询
    • stu = Student.query.get(id)
    • stu.cou
  2. 添加
    • stu = Student.query.get(s_id)
    • cou = Course.query.get(c_id)
    • stu.cou.append(cou)
    • db.session.add(cou)
    • db.session.commit()
  3. 删除
    • stu = Student.query.get(s_id)
    • cou = Course.query.get(c_id)
    • stu.cou.remove(cou)
    • db.session.commit()

项目重构

思想

  1. 公共的文件,或重要的,放到特殊的文件里
  2. 规范化

举例

  1. utils
  2. —- init.py
  3. —- App.py 初始化app,绑定app的操作
  4. —- function.py 公共方法,
  5. —- settings.py 配置文件

debug(被动)

配置

  1. 初始化
  2. 注册
  3. 开启

作用

  1. 查看运行时间
  2. 接口等等

rest_ful 和 marshmellow

  • 对指定的表进行操作,能很方便的进行接口对接,增删查改等

配置

  1. 初始化
  2. 注册

使用

  1. 在views里定义一个类,继承Resourse (rest_ful)
  2. 类里定义增删查改等等方法
  3. 创建一个和views同级的py文件,继承marshmellow方法,来修饰返回哪些数据,用来筛选
  4. 类里的方法返回数据时,调用marshmellow的方法,来返回接口数据,
  5. api.add_resource(类名,’/api/hello/param/’)

猜你喜欢

转载自blog.csdn.net/zhangli709/article/details/80371914