Flask基础
Flask简介
Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进行开发,开发人员分工合作,小型团队在短时间内就可以完成功能丰富的中小型网站或Web服务的实现。另外,Flask还有很强的定制性,用户可以根据自己的需求来添加相应的功能,在保持核心功能简单的同时实现功能的丰富与扩展,其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站。
特点
- 非常齐全的官方文档,社区活跃度高,上手方便
- 轻量级的可定制框架
- 灵活、轻便、安全
- 强大的插件库
- mvc设计模式
Flask依赖
- jinja2模板引擎
- Werkzeug WSGI工具集
- ltsdangerous基于Django的签名模块
Hello Flask
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'hello world'
if __name__ == '__main__':
app.run(debug=True)
Flask_Script
- 可以添加Flask脚本扩展库
- 添加命令和参数
- 使用
- 安装
pip install flask_script
- 初始化
- 使用app构建Manager对象
- 调试
- runserver
- -d 调试模式
- -r 自动加载
- -p 端口
- -h 主机
- --theraded 多线程模式
- shell
- runserver
- 安装
解包
简单解包

路由管理
- 使用的时候容易出现循环引用的问题
- 使用懒加载的方式
- 使用函数调用的形式进行加载
- 使用新方案解决
- 蓝图
- 代表一种规划
- 路由的表达
- flask-blueprint
- 蓝图
flask-blueprint
- 安装
- pip install flask-blueprint
- 初始化
- 创建蓝图对象
- name
- 导入名字 name
- 需要使用app进行初始化
- 注册在app上
- 创建蓝图对象
- 使用
- 和Flask对象差不多
- 直接作为装饰器用来注册路由
二级解包

数据库
- 在大多数web开发中都是使用关系型数据库
- ORM
- SQLAlchemy
- flask-sqlalchemy
- 使用过程
- 安装
pip install flask-sqlalchemy
- 初始化
- 需要使用app进行SQLalchemy对象构建
- 使用懒加载方法 init_app方法构建
- SQLALCHEMY_DATABASE_URI
- 连接数据驱动的路径
- URI格式
数据库+驱动://用户名:密码@主机:端口/具体的库
- SQLALCHEMY_TRACK_MODIFICATIONS
- 将要被添加进来的特性
- 默认是False
- 需要使用app进行SQLalchemy对象构建
- 使用
- 定制模型
- 继承自Model
- 创建字段
- 数据库需要手动创建
- 表
- SQLalchemy对象 .create_all
- 删除 drop_all
- 不能差量更新
- 数据操作
- 插入
- 创建对象
- SQLalchemy对象.session.add()
- 添加完成后要进行提交 commit()
- 插入
- 定制模型
- 安装
- 使用过程
Flask-Migrat
- 迁移插件
- 在Flask中像Django一样进行模型迁移
- 使用过程
- 安装
- pip install Flask—Migrate
- 初始化
- 使用app和db进行初始化
- 可以使用懒加载方式
- 使用
- flask db 指令
- init
初始化,第一次进行初始化,后面就不用了 - migrate
迁移文件 - upgrade
生成迁移文件
- init
- 结合flask-script使用
- 在manager添加管理指令
manager.add_command("db",MigrateCommand)
- python manage db 指令
- 在manager添加管理指令
- flask db 指令
- 安装
项目结构
原版
- HelloFlask.py
改良
三阶改装
- manage.py
项目管理文件 - App
__init__
初始化文件- setting
- config
全局项目配置
- config
- ext
- extension
扩展库,除了与路由相关的全放入
- extension
- view(apis)
路由,视图层 - models
定制模型


浙公网安备 33010602011771号