粗略的记录了一些大纲、重点、难点、可能会遗忘、懒得记忆、方便查阅的东西,配合目录查阅。

第 1 章 - 安装

如何安装和设置 Flask 框架

venv

在 Python 3 中由标准库 venv 创建虚拟环境

1
$ python3 -m venv virtual-environment-name

使用虚拟环境:

1
$ source venv/bin/activate

取消:

1
$ deactivate

第 2 章 - 应用的基本结构

通过一个简单的应用介绍如何使用 Flask

路由

Flask 使用 app.route 装饰器或者作用想通的 app.add_url_rule() 方法构建映射。

flask run

1
2
3
4
$ export FLASK_APP=hello.py
$ export FLASK_DEBUG=1
(或本行)$ export FLASK_ENV=development 效果同上)
$ flask run

上下文

为了避免大量可有可无的参数把视图函数弄得一团糟,Flask 使用上下文临时把某些对象变为全局可访问。

『表格』Flask 上下文全局变量

变量名 上下文 说明
current_app 应用上下文 当前应用的应用实例
g 应用上下文 处理请求时用作临时存储的对象,每次请求都会重设这个变量
request 请求上下文 请求对象,封装了客户端发出的 HTTP 请求中的内容
session 请求上下文 用户会话,值为一个字典,存储请求之间需要『记住』的值

『表格』Flask 请求对象

属性或方法 说明
form 一个字典,存储请求提交的所有表单字段
args 一个字典,存储通过 URL 查询字符串传递的所有参数
values 一个字典,form 和 args 的合集
cookies 一个字典,存储请求的所有 cookies
headers 一个字典,存储请求的所有 HTTP 首部
files 一个字典,存储请求上传的所有文件
get_data() 返回请求主体缓冲的数据
get_json() 返回一个 Python 字典,包含解析请求主体后得到的 JSON
blueprint 处理请求的 Flask 蓝本的名称;蓝本在第 7 章介绍
endpoint 处理请求的 Flask 端点的名称;Flask 把视图函数的名称用作路由端点的名称
scheme URL 方案(http 或 https)
is_secure() 通过安全的连接(HTTPS)发送请求时返回 True
host 请求定义的主机名,如果客户端定义了端口号,还包括端口号
path URL 的路径部分
query_string URL 的查询字符串部分,返回原始二进制值
full_path URL 的路径和查询字符串部分
url 客户端请求的完整 URL
base_url 同 url,但没有查询字符串部分
remote_addr 客户端的 IP 地址
environ 请求的原始 WSGI 环境字典

『表格』Flask 响应对象

属性或方法 说明
status_code HTTP 数字状态码
headers 一个类似字典的对象,包含随响应发送的所有首部
set_cookie() 为响应添加一个 cookie
delete_cookie() 删除一个 cookie
content_length 响应主体的长度
content_type 响应主体的媒体类型
set_data() 使用字符串或字节值设定响应
get_data() 获取响应主体

第 3 章 - 模板

介绍如何在 Flask 应用中使用模板

学习了 Jinja2 的简单使用,Flask-Bootstrap 扩展的应用,Flask-Moment 的本地化时间。

『表格』Jinja2 变量过滤器

过滤器名 说明
safe 渲染值时不转义
capitalize 把值的首字母转换成大写,其他字母转换成小写
lower 把值转换成小写形式
upper 把值转换成大写形式
title 把值中每个单词的首字母都转换成大写
trim 把值的首位空格删掉
striptags 渲染之前把值中所有的 HTML 标签都删掉

第 4 章 - Web 表单

介绍 Web 表单

使用 Flask-WTF 扩展处理 Web 表单。

使用 Flask-WTFFlask-Bootstrap 快速渲染表单。

用 POST/Redirect/GET 模式解决表单页面刷新时重复 POST 提交的问题。

flask.flash 模块闪现消息的使用。

第 5 章 数据库

介绍数据库

数据库简介,与用 SQLAlchemy 进行简单的增删改查,最后是一个数据库迁移操作的简单流程。

『表格』最常用的 SQLAlchemy 列类型

类型名 Python 类型 说明
Integer int 普通整形,通常是 32 位
SmallInteger int 取值范围小的整数,通常是 16 位
BigInteger int 或 long 不限制精度的整数
Float float 浮点数
Numeric decimal.Decimal 定点数
String str 变长字符串
Text str 变长字符串,对较长或不限长度的字符串做了优化
Unicode unicode 变成 Unicode 字符串
UnicodeText unicode 变长 Unicode 字符串,对较长或不限长度的字符串做了优化
Boolean bool 布尔值
Date datetime.date 日期
Time datetime.time 时间
DateTime datetime.datetime 日期和时间
Interval datetime.timedelta 时间间隔
Enum str 一组字符串
PickleType 任何 Python 对象 自动使用 Pickle 序列化
LargeBinary str 二进制 blob

『表格』最常用的 SQLAlchemy 列选项

选项名 说明
primary_key 如果设为 True,列为表的主键
unique 如果设为 True,列不允许出现重复的值
index 如果设为 True,为列创建索引,提升查询效率
nullable 如果设为 True,列允许使用空值;如果设为 False,列不允许使用空值
default 为列定义默认值

『表格』常用的 SQLAlchemy 查询过滤器

过滤器 说明
filter() 把过滤器添加到原查询上,返回一个新查询
filter_by() 把等值过滤器添加到原查询上,返回一个新查询
limit() 使用指定的的值限制原查询返回的结果数量,返回一个新查询
offset() 偏移原查询返回的结果,返回一个新查询
order_by() 根据指定条件对原查询结果进行排序,返回一个新查询
group_by() 根据指定条件对原查询结果进行分组,返回一个新查询

『表格』最常用的 SQLAlchemy 查询执行方法

方法 说明
all() 以列表形式返回查询的所有结果
first() 返回查询的第一个结果,如果没有结果,则返回 None
first_or_404() 返回查询的第一个结果,如果没有结果,则终止请求,返回 404 错误响应
get() 返回指定主键对应的行,如果没有对应的行,则返回 None
get_or_404() 返回指定主键对应的行,如果没找到指定的主键,则终止请求,返回 404 错误响应
count() 返回查询结果的数量
paginate() 返回一个 Paginate 对象,包含指定范围内的结果

第 6 章 电子邮件

介绍如何实现电子邮件支持

第 7 章 大型应用的结构

提供一个可供中大型程序使用的应用结构

本书涉及到的 pip 包

  • flask
  • Jinja2(模板引擎)
  • flask-bootstrap(集成 BootStrap)
  • flask-moment(将 moment.js 集成到 Jinja2 模板)
  • flask-wtf(Web表单)
  • flask-sqlachemy(数据库管理)
  • flask-migrate(数据库迁移)
  • flask-mail(电子邮件)

番茄计数:(按章节)

(一 ~ 六)2+4+6+3+7+2