①一般下午5点前订单,当日发货,开发票联系客服②教材,学习,考试类书默认有笔记(或做过)③其他类书一般无笔记,提前与客服沟通好再下单,否则本店不承担责任)④部分图书籍采用标准图片,可能存在不同印次不同封面,内容一致⑤出版时间过长的书都可能有自然发黄现象。
¥ 96.75 7.5折 ¥ 129 八品
仅1件
作者李辉
出版社机械工业出版社
ISBN9787111606598
出版时间2018-08
装帧平装
开本16开
定价129元
货号1578659913239482368
上书时间2024-11-15
Preface 前 言
Flask是目前最流行的Python Web框架之一。自2010年开源以来,Flask受到了越来越多的Python开发者的喜欢,其受欢迎程度不输于Django。截至2018年6月,它在GitHub上已有近36 000个Star,2000多位Watcher,是目前GitHub中Star数最多的Python Web框架。
Flask的logo
Flask的图标虽然看起来很像辣椒,但其实它是角状的容器(powder horn)。
Flask仅保留了Web框架的核心,其他的功能都交给扩展实现。如果没有合适的扩展,你甚至可以自己编写。Flask不会替你做决定,也不会限制你的选择。它足够轻量,你可以只用5行就编写出一个最简单的Web程序,但并不简陋,它能够适应各类项目的开发。
因为Flask的灵活性,越来越多的公司选择Flask作为Web框架,甚至开始从Django迁移到Flask。使用Flask的公司在国外有Netflix、Reddit、Twilio、Mailgun等,在国内则有豆瓣、果壳、下厨房等,这说明Flask能经受大型项目的挑战,能够适应各种需求。下图列出了部分使用Flask的公司。
你可以在StackShare上查看完整的使用Flask的公司列表(https://stackshare.io/flask)。
使用Flask的公司
在国内,越来越多的Python程序员开始关注和学习Flask。对于国内的程序员来说,相关书籍仅有一两本,内容上也过于陈旧和单薄,希望本书可以填补这一空白。本书提供了学习Flask的完整路径,从基础内容到进阶实践,再到源码分析。同时也安排了丰富的示例程序,让读者可以通过亲自实践来更快地掌握Flask开发。
李辉(Grey Li)
Flask官方开发团队(Pallets Team)成员,知乎专栏“Hello, Flask!”作者,HelloFlask.com网站创建者。对Flask有非常深入的研究,熟悉它的源代码,有丰富的项目经验。
他热爱分享和创造,曾为Flask等多个开源项目贡献过代码,你可以在GitHub(github.com/greyli)上看到他的开源活动。在他的个人网站(greyli.com)上,你可以了解到关于他的更多信息。
目录 Contents
前言
第一部分 基础篇
第1章 初识Flask2
1.1 搭建开发环境3
1.1.1 Pipenv工作流3
1.1.2 安装Flask7
1.1.3 集成开发环境8
1.2 Hello, Flask!11
1.2.1 创建程序实例11
1.2.2 注册路由12
1.3 启动开发服务器14
1.3.1 Run,Flask,Run!14
1.3.2 更多的启动选项18
1.3.3 设置运行环境18
1.4 Python Shell20
1.5 Flask扩展21
1.6 项目配置22
1.7 URL与端点23
1.8 Flask命令23
1.9 模板与静态文件24
1.10 Flask与MVC架构25
1.11 本章小结26
第2章 Flask与HTTP27
2.1 请求响应循环27
2.2 HTTP请求29
2.2.1 请求报文29
2.2.2 Request对象31
2.2.3 在Flask中处理请求34
2.2.4 请求钩子37
2.3 HTTP响应38
2.3.1 响应报文39
2.3.1 在Flask中生成响应40
2.3.2 响应格式43
2.3.3 来一块Cookie46
2.3.4 session:安全的Cookie49
2.4 Flask上下文54
2.4.1 上下文全局变量54
2.4.2 激活上下文55
2.4.3 上下文钩子56
2.5 HTTP进阶实践57
2.5.1 重定向回上一个页面57
2.5.2 使用AJAX技术发送异步请求60
2.5.3 HTTP服务器端推送64
2.5.4 Web安全防范65
2.6 本章小结74
第3章 模板75
3.1 模板基本用法75
3.1.1 创建模板76
3.1.2 模板语法77
3.1.3 渲染模板78
3.2 模板辅助工具80
3.2.1 上下文80
3.2.2 全局对象82
3.2.3 过滤器83
3.2.4 测试器85
3.2.5 模板环境对象87
3.3 模板结构组织88
3.3.1 局部模板88
3.3.2 宏88
3.3.3 模板继承90
3.4 模板进阶实践93
3.4.1 空白控制93
3.4.2 加载静态文件94
3.4.3 消息闪现98
3.4.4 自定义错误页面100
3.4.5 JavaScript和CSS中的Jinja2101
3.5 本章小结103
第4章 表单104
4.1 HTML表单104
4.2 使用Flask-WTF处理表单106
4.2.1 定义WTForms表单类106
4.2.2 输出HTML代码109
4.2.3 在模板中渲染表单110
4.3 处理表单数据112
4.3.1 提交表单112
4.3.2 验证表单数据113
4.3.3 在模板中渲染错误消息117
4.4 表单进阶实践118
4.4.1 设置错误消息语言118
4.4.2 使用宏渲染表单120
4.4.3 自定义验证器121
4.4.4 文件上传122
4.4.5 使用Flask-CKEditor集成富文本编辑器129
4.4.6 单个表单多个提交按钮132
4.4.7 单个页面多个表单133
4.5 本章小结137
第5章 数据库138
5.1 数据库的分类139
5.1.1 SQL139
5.1.2 NoSQL139
5.1.3 如何选择?140
5.2 ORM魔法140
5.3 使用Flask-SQLAlchemy管理数据库142
5.3.1 连接数据库服务器142
5.3.2 定义数据库模型144
5.3.3 创建数据库和表145
5.4 数据库操作146
5.4.1 CRUD147
5.4.2 在视图函数里操作数据库151
5.5 定义关系156
5.5.1 配置Python Shell上下文157
5.5.2 一对多158
5.5.3 多对一164
5.5.4 一对一165
5.5.5 多对多166
5.6 更新数据库表168
5.6.1 重新生成表168
5.6.2 使用Flask-Migrate迁移数据库169
5.6.3 开发时是否需要迁移?171
5.7 数据库进阶实践172
5.7.1 级联操作172
5.7.2 事件监听175
5.8 本章小结177
第6章 电子邮件178
6.1 使用Flask-Mail发送电子邮件179
6.1.1 配置Flask-Mail179
6.1.2 构建邮件数据182
6.1.3 发送邮件182
6.2 使用事务邮件服务SendGird183
6.2.1 注册SendGird183
6.2.2 SendGrid SMTP转发185
6.2.3 SendGrid Web API转发185
6.3 电子邮件进阶实践188
6.3.1 提供HTML正文188
6.3.2 使用Jinja2模板组织邮件正文189
6.3.3 异步发送邮件191
6.4 本章小结192
第二部分 实战篇
第7章 留言板194
7.1 使用包组织代码195
7.1.1 配置文件196
7.1.2 创建程序实例197
7.2 Web程序开发流程198
7.2.1 程序功能设计199
7.2.1 前端页面开发200
7.2.3 后端程序开发202
7.3 使用Bootstrap-Flask简化页面编写206
7.3.1 加载资源文件207
7.3.2 快捷渲染表单207
7.4 使用Flask-Moment本地化日期和时间209
7.4.1 本地化前的准备209
7.4.2 使用Flask-Moment集成Moment.js209
7.4.3 渲染时间日期210
7.5 使用Faker生成虚拟数据213
7.6 使用Flask-DebugToolbar调试程序215
7.7 Flask配置的两种组织形式216
7.7.1 环境变量优先217
7.7.2 实例文件夹覆盖217
7.8 本章小结218
第8章 个人博客219
8.1 大型项目结构220
8.1.1 使用蓝本模块化程序221
8.1.2 使用类组织配置227
8.1.3 使用工厂函数创建程序实例228
8.2 编写程序骨架232
8.2.1 数据库233
8.2.2 模板240
8.2.3 表单246
8.2.4 视图函数249
8.2.5 电子邮件支持249
8.3 编写博客前台251
8.3.1 分页显示文章列表251
8.3.2 显示文章正文258
8.3.3 文章固定链接259
8.3.4 显示分类文章列表262
8.3.5 显示评论列表263
8.3.6 发表评论与回复266
8.3.7 支持回复评论267
8.3.8 网站主题切换269
8.4 初始化博客271
8.4.1 安全存储密码271
8.4.2 创建管理员用户273
8.5 使用Flask-Login管理用户认证275
8.5.1 获取当前用户276
8.5.2 登入用户277
8.5.3 登出用户278
8.5.4 视图保护279
8.6 使用CSRFProtect实现CSRF保护281
8.7 编写博客后台283
8.7.1 文章管理284
8.7.2 评论管理291
8.7.3 分类管理297
8.8 本章小结298
第9章 图片社交网站299
9.1 项目组织架构300
9.1.1 功能式架构300
9.1.2 分区式架构302
9.1.3 混合式架构303
9.1.4 如何选择303
9.2 编写程序骨架303
9.2.1 数据库模型与虚拟数据305
9.2.2 模板与静态文件307
9.3 高级用户认证308
9.3.1 用户注册309
9.3.2 验证邮箱地址311
9.3.3 使用装饰器过滤未确认用户315
9.3.4 密码重置316
9.4 基于用户角色的权限管理319
9.4.1 角色与权限模型319
9.4.2 设置角色与权限320
9.4.3 写入角色与权限321
9.4.4 验证用户权限323
9.5 使用Flask-Dropzone优化文件上传325
9.5.1 配置Flask-Dropzone326
9.5.2 渲染上传区域328
9.5.3 处理并保存上传图片329
9.6 使用Flask-Avatars处理用户头像334
9.6.1 默认头像335
9.6.2 生成随机头像335
9.7 图片展示与管理337
9.7.1 在用户主页显示图片列表338
9.7.2 图片详情页341
9.7.3 上一张下一张跳转342
9.7.4 删除确认模态框344
9.7.5 举报图片346
9.7.6 图片描述347
9.7.7 图片标签349
9.7.8 用户资料弹窗353
9.8 收藏图片358
9.8.1 使用关联模型表示多对多关系358
9.8.2 添加和取消收藏360
9.8.3 收藏者和收藏页面362
9.9 用户关注365
9.9.1 自引用多对多关系365
9.9.2 关注与取消关注366
9.9.3 显示关注用户列表369
9.9.4 使用AJAX在弹窗中执行关注操作371
9.10 消息提醒378
9.10.1 提醒消息在数据库中的表示379
9.10.2 创建提醒379
9.10.3 显示和管理提醒380
9.10.4 通过轮询实时更新未读计数382
9.11 用户资料与账户设置384
9.11.1 编辑个人资料385
9.11.2 自定义头像386
9.11.3 更改密码392
9.11.4 提醒消息开关394
9.11.5 将收藏设为仅自己可见395
9.11.6 注销账户396
9.12 首页与探索397
9.12.1 获取正在关注用户的图片399
9.12.2 使用联结和分组查询获取热门标签401
9.12.3 使用数据库通用函数获取随机图片402
9.13 使用Flask-Whooshee实现全文搜索403
9.13.1 创建索引404
9.13.2 搜索表单405
9.13.3 显示搜索结果406
9.14 编写网站后台407
9.14.1 用户管理408
9.14.2 资源管理411
9.14.3 面向管理员的用户资料编辑412
9.15 本章小结413
第10章 待办事项程序415
10.1 使用JavaScript和AJAX编写单页程序417
10.1.1 单页程序的模板组织418
10.1.2 在根页面内切换子页面421
10.1.3 生成测试账户423
10.1.4 添加新待办条目424
10.2 国际化与本地化426
10.2.1 使用Flask-Babel集成Babel427
10.2.2 区域和语言427
10.2.3 文本的国际化432
10.2.4 文本的本地化433
10.2.5 时间与日期的本地化438
10.3 设计并编写Web API440
10.3.1 认识Web API441
10.3.2 设计优美实用的Web API443
10.3.3 使用Flask编写Web API446
10.3.4 使用OAuth认证453
10.3.5 资源的序列化461
10.3.6 资源的反序列化465
10.3.7 Web API的测试与发布470
10.4 本章小结473
第11章 在线聊天室474
11.1 编写程序骨架476
11.2 Gravatar头像477
11.3 使用Flask-SocketIO建立实时双向通信480
11.3.1 建立Socket.IO连接481
11.3.2 一条消息的旅程482
11.3.3 在线人数统计485
11.3.4 通信频道分离486
11.4 使用Flask-OAuthlib实现第三方登录489
11.4.1 编写OAuth客户端490
11.4.2 注册OAuth程序491
11.4.3 处理OAuth2授权493
11.4.4 处理OAuth1授权505
11.5 聊天室功能增强507
11.5.1 无限滚动加载历史消息507
11.5.2 Markdown支持510
11.5.3 代码语法高亮512
11.5.4 标签页消息提醒515
11.5.5 浏览器桌面通知517
11.5.6 消息管理519
11.6 本章小结519
第三部分 进阶篇
第12章 自动化测试522
12.1 认识自动化测试522
12.2 Flask测试客户端523
12.3 使用unittest编写单元测试525
12.3.1 Flask程序的测试固件525
12.3.2 编写测试用例527
12.3.3 组织测试533
12.3.4 运行测试535
12.4 使用Selenium进行用户界面测试536
12.4.1 安装浏览器与驱动537
12.4.2 准备测试环境538
12.4.3 编写测试代码539
12.5 使用Coverage.py计算测试覆盖率541
12.5.1 基本用法542
12.5.2 获取测试覆盖率543
12.6 使用Flake8检查代码质量544
12.7 本章小结546
第13章 性能优化547
13.1 程序性能分析548
13.1.1 函数性能分析548
13.1.2 数据库查询分析549
13.2 使用Flask-Caching设置缓存551
13.2.1 缓存视图函数552
13.2.2 缓存其他函数554
13.2.3 更新缓存554
13.2.4 使用Redis作为缓存后端556
13.3 使用Flask-Assets优化静态资源557
13.3.1 注册资源集558
13.3.2 生成资源集文件559
13.3.3 在模板中加载资源集559
13.4 本章小结562
第14章 部署上线563
14.1 传统部署VS云部署563
14.2 基本部署流程564
14.3 部署前的准备566
14.3.1 更新程序配置566
14.3.2 创建生产环境专用的程序实例567
14.3.3 设置迁移工具568
14.3.4 程序日志568
14.3.5 手动导入环境变量572
14.3.6 HTTPS转发572
14.4 部署到Linux服务器573
14.4.1 使用OpenSSH登录远程主机573
14.4.2 安装基本库和工具574
14.4.3 安全防护措施575
14.4.4 推送代码并初始化程序环境578
14.4.5 使用Gunicorn运行程序579
14.4.6 使用Nginx提供反向代理580
14.4.7 使用Supervisor管理进程584
14.4.8 更新部署后的程序586
14.5 部署到PythonAnywhere587
14.5.1 反向代理设置587
14.5.2 创建PythonAnywhere程序588
14.5.3 推送代码并初始化程序环境588<
— 没有更多了 —
以下为对购买帮助不大的评价