Flask Web开发实战:入门、进阶与原理解析 (Web开发技术丛书) 🔍
李辉著
北京:机械工业出版社, Web kai fa ji shu cong shu, Di 1 ban, Beijing, 2018
中文 [zh] · PDF · 6.7MB · 2018 · 📘 非小说类图书 · 🚀/duxiu/lgli/zlib · Save
描述
Ben shu cong ji chu zhi shi dao jin jie shi zhan,Zai dao Flask yuan li he gong zuo ji zhi jie xi,Han gai wan zheng de Flask Web kai fa xue xi lu jing.Quan shu cong kai fa huan jing de da jian,Xiang mu de jian li yu zu zhi dao cheng xu de bian xie,Zai dao zi dong hua ce shi,Xing neng you hua,Hou dao sheng chan huan jing de da jian he bu shu shang xian,Xiang xi jiang jie wan zheng de Flask Web cheng xu kai fa liu cheng,Yong 5 ge zong he xing an li jiang bu tong nan du ceng ji de zhi shi dian ji ju ti yuan li chuan lian qi lai,Rang ni zai kai fa ji qiao,Yuan li shi xian he bian cheng si xiang shang dou huo de xiang ying de ti sheng
备用文件名
zlib/Computers/Web Development/李辉/Flask Web开发实战:入门、进阶与原理解析 (Web开发技术丛书)_18348043.pdf
备选标题
Flask Web开发实战 : 入门,进阶与原理解析 = Python Web development with flask
备选标题
Flask Web开发实战 Python Web development with flask : 入门、进阶与原理解析
备用出版商
China Machine Press
备用版本
China, People's Republic, China
备用版本
2021
元数据中的注释
Bookmarks: p1 (p2): 第一部分 基础篇
p1-1 (p2): 第1章 初识Flask
p1-1-1 (p3): 1.1搭建开发环境
p1-1-1-1 (p3): 1.1.1 Pipenv工作流
p1-1-1-2 (p7): 1.1.2安装Flask
p1-1-1-3 (p8): 1.1.3集成开发环境
p1-1-2 (p11): 1.2 Hello,Flask!
p1-1-2-1 (p11): 1.2.1创建程序实例
p1-1-2-2 (p12): 1.2.2注册路由
p1-1-3 (p14): 1.3启动开发服务器
p1-1-3-1 (p14): 1.3.1 Run,Flask,Run!
p1-1-3-2 (p18): 1.3.2更多的启动选项
p1-1-3-3 (p18): 1.3.3设置运行环境
p1-1-4 (p20): 1.4 Python Shell
p1-1-5 (p21): 1.5 Flask扩展
p1-1-6 (p22): 1.6项目配置
p1-1-7 (p23): 1.7 URL与端点
p1-1-8 (p23): 1.8 Flask命令
p1-1-9 (p24): 1.9模板与静态文件
p1-1-10 (p25): 1.10 Flask与MVC架构
p1-1-11 (p26): 1.11本章小结
p1-2 (p27): 第2章 Flask与HTTP
p1-2-1 (p27): 2.1请求响应循环
p1-2-2 (p29): 2.2 HTTP请求
p1-2-2-1 (p29): 2.2.1请求报文
p1-2-2-2 (p31): 2.2.2 Request对象
p1-2-2-3 (p34): 2.2.3在Flask中处理请求
p1-2-2-4 (p37): 2.2.4请求钩子
p1-2-3 (p38): 2.3 HTTP响应
p1-2-3-1 (p39): 2.3.1响应报文
p1-2-3-2 (p40): 2.3.1在Flask中生成响应
p1-2-3-3 (p43): 2.3.2响应格式
p1-2-3-4 (p46): 2.3.3来一块Cookie
p1-2-3-5 (p49): 2.3.4 session:安全的Cookie
p1-2-4 (p54): 2.4 Flask上下文
p1-2-4-1 (p54): 2.4.1上下文全局变量
p1-2-4-2 (p55): 2.4.2激活上下文
p1-2-4-3 (p56): 2.4.3上下文钩子
p1-2-5 (p57): 2.5 HTTP进阶实践
p1-2-5-1 (p57): 2.5.1重定向回上一个页面
p1-2-5-2 (p60): 2.5.2使用AJAX技术发送异步请求
p1-2-5-3 (p64): 2.5.3 HTTP服务器端推送
p1-2-5-4 (p65): 2.5.4 Web安全防范
p1-2-6 (p74): 2.6本章小结
p1-3 (p75): 第3章 模板
p1-3-1 (p75): 3.1模板基本用法
p1-3-1-1 (p76): 3.1.1创建模板
p1-3-1-2 (p77): 3.1.2模板语法
p1-3-1-3 (p78): 3.1.3渲染模板
p1-3-2 (p80): 3.2模板辅助工具
p1-3-2-1 (p80): 3.2.1上下文
p1-3-2-2 (p82): 3.2.2全局对象
p1-3-2-3 (p83): 3.2.3过滤器
p1-3-2-4 (p85): 3.2.4测试器
p1-3-2-5 (p87): 3.2.5模板环境对象
p1-3-3 (p88): 3.3模板结构组织
p1-3-3-1 (p88): 3.3.1局部模板
p1-3-3-2 (p88): 3.3.2宏
p1-3-3-3 (p90): 3.3.3模板继承
p1-3-4 (p93): 3.4模板进阶实践
p1-3-4-1 (p93): 3.4.1空白控制
p1-3-4-2 (p94): 3.4.2加载静态文件
p1-3-4-3 (p98): 3.4.3消息闪现
p1-3-4-4 (p100): 3.4.4自定义错误页面
p1-3-4-5 (p101): 3.4.5 JavaScript和CSS中的Jinja2
p1-3-5 (p103): 3.5本章小结
p1-4 (p104): 第4章 表单
p1-4-1 (p104): 4.1 HTML表单
p1-4-2 (p106): 4.2使用Flask-WTF处理表单
p1-4-2-1 (p106): 4.2.1定义WTForms表单类
p1-4-2-2 (p109): 4.2.2输出HTML代码
p1-4-2-3 (p110): 4.2.3在模板中渲染表单
p1-4-3 (p112): 4.3处理表单数据
p1-4-3-1 (p112): 4.3.1提交表单
p1-4-3-2 (p113): 4.3.2验证表单数据
p1-4-3-3 (p117): 4.3.3在模板中渲染错误消息
p1-4-4 (p118): 4.4表单进阶实践
p1-4-4-1 (p118): 4.4.1设置错误消息语言
p1-4-4-2 (p120): 4.4.2使用宏渲染表单
p1-4-4-3 (p121): 4.4.3自定义验证器
p1-4-4-4 (p122): 4.4.4文件上传
p1-4-4-5 (p129): 4.4.5使用Flask-CKEditor集成富文本编辑器
p1-4-4-6 (p132): 4.4.6单个表单多个提交按钮
p1-4-4-7 (p133): 4.4.7单个页面多个表单
p1-4-5 (p137): 4.5本章小结
p1-5 (p138): 第5章 数据库
p1-5-1 (p139): 5.1数据库的分类
p1-5-1-1 (p139): 5.1.1 SQL
p1-5-1-2 (p139): 5.1.2 NoSQL
p1-5-1-3 (p140): 5.1.3如何选择?
p1-5-2 (p140): 5.2 ORM魔法
p1-5-3 (p142): 5.3使用Flask-SQLAlchemy管理数据库
p1-5-3-1 (p142): 5.3.1连接数据库服务器
p1-5-3-2 (p144): 5.3.2定义数据库模型
p1-5-3-3 (p145): 5.3.3创建数据库和表
p1-5-4 (p146): 5.4数据库操作
p1-5-4-1 (p147): 5.4.1 CRUD
p1-5-4-2 (p151): 5.4.2在视图函数里操作数据库
p1-5-5 (p156): 5.5定义关系
p1-5-5-1 (p157): 5.5.1配置Python Shell上下文
p1-5-5-2 (p158): 5.5.2一对多
p1-5-5-3 (p164): 5.5.3多对一
p1-5-5-4 (p165): 5.5.4一对一
p1-5-5-5 (p166): 5.5.5多对多
p1-5-6 (p168): 5.6更新数据库表
p1-5-6-1 (p168): 5.6.1重新生成表
p1-5-6-2 (p169): 5.6.2使用Flask-Migrate迁移数据库
p1-5-6-3 (p171): 5.6.3开发时是否需要迁移?
p1-5-7 (p172): 5.7数据库进阶实践
p1-5-7-1 (p172): 5.7.1级联操作
p1-5-7-2 (p175): 5.7.2事件监听
p1-5-8 (p177): 5.8本章小结
p1-6 (p178): 第6章 电子邮件
p1-6-1 (p179): 6.1使用Flask-Mail发送电子邮件
p1-6-1-1 (p179): 6.1.1配置Flask-Mail
p1-6-1-2 (p182): 6.1.2构建邮件数据
p1-6-1-3 (p182): 6.1.3发送邮件
p1-6-2 (p183): 6.2使用事务邮件服务SendGird
p1-6-2-1 (p183): 6.2.1注册SendGird
p1-6-2-2 (p185): 6.2.2 SendGrid SMTP转发
p1-6-2-3 (p185): 6.2.3 SendGrid Web API转发
p1-6-3 (p188): 6.3电子邮件进阶实践
p1-6-3-1 (p188): 6.3.1提供HTML正文
p1-6-3-2 (p189): 6.3.2使用Jinja2模板组织邮件正文
p1-6-3-3 (p191): 6.3.3异步发送邮件
p1-6-4 (p192): 6.4本章小结
p2 (p194): 第二部分 实战篇
p2-1 (p194): 第7章 留言板
p2-1-1 (p195): 7.1使用包组织代码
p2-1-1-1 (p196): 7.1.1配置文件
p2-1-1-2 (p197): 7.1.2创建程序实例
p2-1-2 (p198): 7.2 Web程序开发流程
p2-1-2-1 (p199): 7.2.1程序功能设计
p2-1-2-2 (p200): 7.2.1前端页面开发
p2-1-2-3 (p202): 7.2.3后端程序开发
p2-1-3 (p206): 7.3使用Bootstrap-Flask简化页面编写
p2-1-3-1 (p207): 7.3.1加载资源文件
p2-1-3-2 (p207): 7.3.2快捷渲染表单
p2-1-4 (p209): 7.4使用 Flask-Moment本地化日期和时间
p2-1-4-1 (p209): 7.4.1本地化前的准备
p2-1-4-2 (p209): 7.4.2使用Flask-Moment集成Moment…js
p2-1-4-3 (p210): 7.4.3渲染时间日期
p2-1-5 (p213): 7.5使用Faker生成虚拟数据
p2-1-6 (p215): 7.6使用Flask-DebugToolbar调试程序
p2-1-7 (p216): 7.7 Flask配置的两种组织形式
p2-1-7-1 (p217): 7.7.1环境变量优先
p2-1-7-2 (p217): 7.7.2实例文件夹覆盖
p2-1-8 (p218): 7.8本章小结
p2-2 (p219): 第8章 个人博客
p2-2-1 (p220): 8.1大型项目结构
p2-2-1-1 (p221): 8.1.1使用蓝本模块化程序
p2-2-1-2 (p227): 8.1.2使用类组织配置
p2-2-1-3 (p228): 8.1.3使用工厂函数创建程序实例
p2-2-2 (p232): 8.2编写程序骨架
p2-2-2-1 (p233): 8.2.1数据库
p2-2-2-2 (p240): 8.2.2模板
p2-2-2-3 (p246): 8.2.3表单
p2-2-2-4 (p249): 8.2.4视图函数
p2-2-2-5 (p249): 8.2.5电子邮件支持
p2-2-3 (p251): 8.3编写博客前台
p2-2-3-1 (p251): 8.3.1分页显示文章列表
p2-2-3-2 (p258): 8.3.2显示文章正文
p2-2-3-3 (p259): 8.3.3文章固定链接
p2-2-3-4 (p262): 8.3.4显示分类文章列表
p2-2-3-5 (p263): 8.3.5显示评论列表
p2-2-3-6 (p266): 8.3.6发表评论与回复
p2-2-3-7 (p267): 8.3.7支持回复评论
p2-2-3-8 (p269): 8.3.8网站主题切换
p2-2-4 (p271): 8.4初始化博客
p2-2-4-1 (p271): 8.4.1安全存储密码
p2-2-4-2 (p273): 8.4.2创建管理员用户
p2-2-5 (p275): 8.5使用Flask-Login管理用户认证
p2-2-5-1 (p276): 8.5.1获取当前用户
p2-2-5-2 (p277): 8.5.2登入用户
p2-2-5-3 (p278): 8.5.3登出用户
p2-2-5-4 (p279): 8.5.4视图保护
p2-2-6 (p281): 8.6使用CSRFProtect实现CSRF保护
p2-2-7 (p283): 8.7编写博客后台
p2-2-7-1 (p284): 8.7.1文章管理
p2-2-7-2 (p291): 8.7.2评论管理
p2-2-7-3 (p297): 8.7.3分类管理
p2-2-8 (p298): 8.8本章小结
p2-3 (p299): 第9章 图片社交网站
p2-3-1 (p300): 9.1项目组织架构
p2-3-1-1 (p300): 9.1.1功能式架构
p2-3-1-2 (p302): 9.1.2分区式架构
p2-3-1-3 (p303): 9.1.3混合式架构
p2-3-1-4 (p303): 9.1.4如何选择
p2-3-2 (p303): 9.2编写程序骨架
p2-3-2-1 (p305): 9.2.1数据库模型与虚拟数据
p2-3-2-2 (p307): 9.2.2模板与静态文件
p2-3-3 (p308): 9.3高级用户认证
p2-3-3-1 (p309): 9.3.1用户注册
p2-3-3-2 (p311): 9.3.2验证邮箱地址
p2-3-3-3 (p315): 9.3.3使用装饰器过滤未确认用户
p2-3-3-4 (p316): 9.3.4密码重置
p2-3-4 (p319): 9.4基于用户角色的权限管理
p2-3-4-1 (p319): 9.4.1角色与权限模型
p2-3-4-2 (p320): 9.4.2设置角色与权限
p2-3-4-3 (p321): 9.4.3写入角色与权限
p2-3-4-4 (p323): 9.4.4验证用户权限
p2-3-5 (p325): 9.5使用Flask-Dropzone优化文件上传
p2-3-5-1 (p326): 9.5.1配置Flask-Dropzone
p2-3-5-2 (p328): 9.5.2渲染上传区域
p2-3-5-3 (p329): 9.5.3处理并保存上传图片
p2-3-6 (p334): 9.6使用Flask-Avatars处理用户头像
p2-3-6-1 (p335): 9.6.1默认头像
p2-3-6-2 (p335): 9.6.2生成随机头像
p2-3-7 (p337): 9.7图片展示与管理
p2-3-7-1 (p338): 9.7.1在用户主页显示图片列表
p2-3-7-2 (p341): 9.7.2图片详情页
p2-3-7-3 (p342): 9.7.3上一张下一张跳转
p2-3-7-4 (p344): 9.7.4删除确认模态框
p2-3-7-5 (p346): 9.7.5举报图片
p2-3-7-6 (p347): 9.7.6图片描述
p2-3-7-7 (p349): 9.7.7图片标签
p2-3-7-8 (p353): 9.7.8用户资料弹窗
p2-3-8 (p358): 9.8收藏图片
p2-3-8-1 (p358): 9.8.1使用关联模型表示多对多关系
p2-3-8-2 (p360): 9.8.2添加和取消收藏
p2-3-8-3 (p362): 9.8.3收藏者和收藏页面
p2-3-9 (p365): 9.9用户关注
p2-3-9-1 (p365): 9.9.1自引用多对多关系
p2-3-9-2 (p366): 9.9.2关注与取消关注
p2-3-9-3 (p369): 9.9.3显示关注用户列表
p2-3-9-4 (p371): 9.9.4使用AJAX在弹窗中执行关注操作
p2-3-10 (p378): 9.10消息提醒
p2-3-10-1 (p379): 9.10.1提醒消息在数据库中的表示
p2-3-10-2 (p379): 9.10.2创建提醒
p2-3-10-3 (p380): 9.10.3显示和管理提醒
p2-3-10-4 (p382): 9.10.4通过轮询实时更新未读计数
p2-3-11 (p384): 9.11用户资料与账户设置
p2-3-11-1 (p385): 9.11.1编辑个人资料
p2-3-11-2 (p386): 9.11.2自定义头像
p2-3-11-3 (p392): 9.11.3更改密码
p2-3-11-4 (p394): 9.11.4提醒消息开关
p2-3-11-5 (p395): 9.11.5将收藏设为仅自己可见
p2-3-11-6 (p396): 9.11.6注销账户
p2-3-12 (p397): 9.12首页与探索
p2-3-12-1 (p399): 9.12.1获取正在关注用户的图片
p2-3-12-2 (p401): 9.12.2使用联结和分组查询获取热门标签
p2-3-12-3 (p402): 9.12.3使用数据库通用函数获取随机图片
p2-3-13 (p403): 9.13使用Flask-Whooshee实现全文搜索
p2-3-13-1 (p404): 9.13.1创建索引
p2-3-13-2 (p405): 9.13.2搜索表单
p2-3-13-3 (p406): 9.13.3显示搜索结果
p2-3-14 (p407): 9.14编写网站后台
p2-3-14-1 (p408): 9.14.1用户管理
p2-3-14-2 (p411): 9.14.2资源管理
p2-3-14-3 (p412): 9.14.3面向管理员的用户资料编辑
p2-3-15 (p413): 9.15本章小结
p2-4 (p415): 第10章 待办事项程序
p2-4-1 (p417): 10.1使用JavaScript和AJAX编写单页程序
p2-4-1-1 (p418): 10.1.1单页程序的模板组织
p2-4-1-2 (p421): 10.1.2在根页面内切换子页面
p2-4-1-3 (p423): 10.1.3生成测试账户
p2-4-1-4 (p424): 10.1.4添加新待办条目
p2-4-2 (p426): 10.2国际化与本地化
p2-4-2-1 (p427): 10.2.1使用Flask-Babel集成Babel
p2-4-2-2 (p427): 10.2.2区域和语言
p2-4-2-3 (p432): 10.2.3文本的国际化
p2-4-2-4 (p433): 10.2.4文本的本地化
p2-4-2-5 (p438): 10.2.5时间与日期的本地化
p2-4-3 (p440): 10.3设计并编写Web API
p2-4-3-1 (p441): 10.3.1认识Web API
p2-4-3-2 (p443): 10.3.2设计优美实用的Web API
p2-4-3-3 (p446): 10.3.3使用Flask编写Web API
p2-4-3-4 (p453): 10.3.4使用OAuth认证
p2-4-3-5 (p461): 10.3.5资源的序列化
p2-4-3-6 (p465): 10.3.6资源的反序列化
p2-4-3-7 (p470): 10.3.7 Web API的测试与发布
p2-4-4 (p473): 10.4本章小结
p2-5 (p474): 第11章 在线聊天室
p2-5-1 (p476): 11.1编写程序骨架
p2-5-2 (p477): 11.2 Gravatar头像
p2-5-3 (p480): 11.3使用Flask-SocketIO建立实时双向通信
p2-5-3-1 (p481): 11.3.1建立Socket.IO连接
p2-5-3-2 (p482): 11.3.2一条消息的旅程
p2-5-3-3 (p485): 11.3.3在线人数统计
p2-5-3-4 (p486): 11.3.4通信频道分离
p2-5-4 (p489): 11.4使用Flask-OAuthlib实现第三方登录
p2-5-4-1 (p490): 11.4.1编写OAuth客户端
p2-5-4-2 (p491): 11.4.2注册OAuth程序
p2-5-4-3 (p493): 11.4.3处理OAuth2授权
p2-5-4-4 (p505): 11.4.4处理OAuth1授权
p2-5-5 (p507): 11.5聊天室功能增强
p2-5-5-1 (p507): 11.5.1无限滚动加载历史消息
p2-5-5-2 (p510): 11.5.2 Markdown支持
p2-5-5-3 (p512): 11.5.3代码语法高亮
p2-5-5-4 (p515): 11.5.4标签页消息提醒
p2-5-5-5 (p517): 11.5.5浏览器桌面通知
p2-5-5-6 (p519): 11.5.6消息管理
p2-5-6 (p519): 11.6本章小结
p3 (p522): 第三部分 进阶篇
p3-1 (p522): 第12章 自动化测试
p3-1-1 (p522): 12.1认识自动化测试
p3-1-2 (p523): 12.2 Flask测试客户端
p3-1-3 (p525): 12.3使用unittest编写单元测试
p3-1-3-1 (p525): 12.3.1 Flask程序的测试固件
p3-1-3-2 (p527): 12.3.2编写测试用例
p3-1-3-3 (p533): 12.3.3组织测试
p3-1-3-4 (p535): 12.3.4运行测试
p3-1-4 (p536): 12.4使用Selenium进行用户界面测试
p3-1-4-1 (p537): 12.4.1安装浏览器与驱动
p3-1-4-2 (p538): 12.4.2准备测试环境
p3-1-4-3 (p539): 12.4.3编写测试代码
p3-1-5 (p541): 12.5使用Coverage.py计算测试覆盖率
p3-1-5-1 (p542): 12.5.1基本用法
p3-1-5-2 (p543): 12.5.2获取测试覆盖率
p3-1-6 (p544): 12.6使用Flake8检查代码质量
p3-1-7 (p546): 12.7本章小结
p3-2 (p547): 第13章 性能优化
p3-2-1 (p548): 13.1程序性能分析
p3-2-1-1 (p548): 13.1.1函数性能分析
p3-2-1-2 (p549): 13.1.2数据库查询分析
p3-2-2 (p551): 13.2使用Flask-Caching设置缓存
p3-2-2-1 (p552): 13.2.1缓存视图函数
p3-2-2-2 (p554): 13.2.2缓存其他函数
p3-2-2-3 (p554): 13.2.3更新缓存
p3-2-2-4 (p556): 13.2.4使用Redis作为缓存后端
p3-2-3 (p557): 13.3使用Flask-Assets优化静态资源
p3-2-3-1 (p558): 13.3.1注册资源集
p3-2-3-2 (p559): 13.3.2生成资源集文件
p3-2-3-3 (p559): 13.3.3在模板中加载资源集
p3-2-4 (p562): 13.4本章小结
p3-3 (p563): 第14章 部署上线
p3-3-1 (p563): 14.1传统部署VS云部署
p3-3-2 (p564): 14.2基本部署流程
p3-3-3 (p566): 14.3部署前的准备
p3-3-3-1 (p566): 14.3.1更新程序配置
p3-3-3-2 (p567): 14.3.2创建生产环境专用的程序实例
p3-3-3-3 (p568): 14.3.3设置迁移工具
p3-3-3-4 (p568): 14.3.4程序日志
p3-3-3-5 (p572): 14.3.5手动导入环境变量
p3-3-3-6 (p572): 14.3.6 HTTPS转发
p3-3-4 (p573): 14.4部署到Linux服务器
p3-3-4-1 (p573): 14.4.1使用OpenSSH登录远程主机
p3-3-4-2 (p574): 14.4.2安装基本库和工具
p3-3-4-3 (p575): 14.4.3安全防护措施
p3-3-4-4 (p578): 14.4.4推送代码并初始化程序环境
p3-3-4-5 (p579): 14.4.5使用Gunicom运行程序
p3-3-4-6 (p580): 14.4.6使用Nginx提供反向代理
p3-3-4-7 (p584): 14.4.7使用Supervisor管理进程
p3-3-4-8 (p586): 14.4.8更新部署后的程序
p3-3-5 (p587): 14.5部署到PythonAnywhere
p3-3-5-1 (p587): 14.5.1反向代理设置
p3-3-5-2 (p588): 14.5.2创建PythonAnywhere程序
p3-3-5-3 (p588): 14.5.3推送代码并初始化程序环境
p3-3-5-4 (p590): 14.5.4创建数据库
p3-3-5-5 (p591): 14.5.5设置虚拟环境
p3-3-5-6 (p592): 14.5.6静态文件
p3-3-5-7 (p592): 14.5.7运行和更新程序
p3-3-6 (p594): 14.6部署到Heroku
p3-3-6-1 (p595): 14.6.1通过Heroku Git部署
p3-3-6-2 (p601): 14.6.2使用GitHub部署
p3-3-7 (p603): 14.7下一步做什么?
p3-3-8 (p604): 14.8本章小结
p3-4 (p605): 第15章 Flask扩展开发
p3-4-1 (p606): 15.1扩展的命名
p3-4-2 (p606): 15.2扩展项目骨架
p3-4-3 (p608): 15.3编写扩展类
p3-4-4 (p610): 15.4添加扩展配置
p3-4-5 (p610): 15.5实现扩展功能
p3-4-5-1 (p611): 15.5.1加载静态资源
p3-4-5-2 (p612): 15.5.2创建分享组件
p3-4-5-3 (p613): 15.5.3在移动设备上隐藏
p3-4-6 (p614): 15.6开源发布前的准备
p3-4-6-1 (p614): 15.6.1添加文档字符串与注释
p3-4-6-2 (p615): 15.6.2编写README与文档
p3-4-6-3 (p616): 15.6.3为打包做准备
p3-4-6-4 (p621): 15.6.4编写示例程序
p3-4-6-5 (p621): 15.6.5编写单元测试
p3-4-7 (p622): 15.7发布到PyPI
p3-4-7-1 (p623): 15.7.1创建PypI账号
p3-4-7-2 (p623): 15.7.2使用setuptools打包
p3-4-7-3 (p625): 15.7.3使用twine上传
p3-4-8 (p625): 15.8编写良好的扩展
p3-4-9 (p627): 15.9本章小结
p3-5 (p628): 第16章 Flask工作原理与机制解析
p3-5-1 (p628): 16.1阅读 Flask源码
p3-5-1-1 (p628): 16.1.1获取Flask源码
p3-5-1-2 (p629): 16.1.2如何阅读源码
p3-5-1-3 (p637): 16.1.3 Flask发行版本分析
p3-5-2 (p638): 16.2 Flask的设计理念
p3-5-2-1 (p638): 16.2.1“微”框架
p3-5-2-2 (p638): 16.2.2两个核心依赖
p3-5-2-3 (p638): 16.2.3显式程序对象
p3-5-2-4 (p639): 16.2.4本地上下文
p3-5-2-5 (p640): 16.2.5三种程序状态
p3-5-2-6 (p641): 16.2.6丰富的自定义支持
p3-5-3 (p641): 16.3 Flask与WSGI
p3-5-3-1 (p642): 16.3.1 WSGI程序
p3-5-3-2 (p643): 16.3.2 WSGI服务器
p3-5-3-3 (p644): 16.3.3中间件
p3-5-4 (p646): 16.4 Flask的工作流程与机制
p3-5-4-1 (p646): 16.4.1 Flask中的请求响应循环
p3-5-4-2 (p649): 16.4.2路由系统
p3-5-4-3 (p653): 16.4.3本地上下文
p3-5-4-4 (p665): 16.4.4请求与响应对象
p3-5-4-5 (p667): 16.4.5 session
p3-5-4-6 (p674): 16.4.6蓝本
p3-5-4-7 (p677): 16.4.7模板渲染
p3-5-5 (p680): 16.5本章小结
p4 (p681): 附录A Flask资源
p1-1 (p2): 第1章 初识Flask
p1-1-1 (p3): 1.1搭建开发环境
p1-1-1-1 (p3): 1.1.1 Pipenv工作流
p1-1-1-2 (p7): 1.1.2安装Flask
p1-1-1-3 (p8): 1.1.3集成开发环境
p1-1-2 (p11): 1.2 Hello,Flask!
p1-1-2-1 (p11): 1.2.1创建程序实例
p1-1-2-2 (p12): 1.2.2注册路由
p1-1-3 (p14): 1.3启动开发服务器
p1-1-3-1 (p14): 1.3.1 Run,Flask,Run!
p1-1-3-2 (p18): 1.3.2更多的启动选项
p1-1-3-3 (p18): 1.3.3设置运行环境
p1-1-4 (p20): 1.4 Python Shell
p1-1-5 (p21): 1.5 Flask扩展
p1-1-6 (p22): 1.6项目配置
p1-1-7 (p23): 1.7 URL与端点
p1-1-8 (p23): 1.8 Flask命令
p1-1-9 (p24): 1.9模板与静态文件
p1-1-10 (p25): 1.10 Flask与MVC架构
p1-1-11 (p26): 1.11本章小结
p1-2 (p27): 第2章 Flask与HTTP
p1-2-1 (p27): 2.1请求响应循环
p1-2-2 (p29): 2.2 HTTP请求
p1-2-2-1 (p29): 2.2.1请求报文
p1-2-2-2 (p31): 2.2.2 Request对象
p1-2-2-3 (p34): 2.2.3在Flask中处理请求
p1-2-2-4 (p37): 2.2.4请求钩子
p1-2-3 (p38): 2.3 HTTP响应
p1-2-3-1 (p39): 2.3.1响应报文
p1-2-3-2 (p40): 2.3.1在Flask中生成响应
p1-2-3-3 (p43): 2.3.2响应格式
p1-2-3-4 (p46): 2.3.3来一块Cookie
p1-2-3-5 (p49): 2.3.4 session:安全的Cookie
p1-2-4 (p54): 2.4 Flask上下文
p1-2-4-1 (p54): 2.4.1上下文全局变量
p1-2-4-2 (p55): 2.4.2激活上下文
p1-2-4-3 (p56): 2.4.3上下文钩子
p1-2-5 (p57): 2.5 HTTP进阶实践
p1-2-5-1 (p57): 2.5.1重定向回上一个页面
p1-2-5-2 (p60): 2.5.2使用AJAX技术发送异步请求
p1-2-5-3 (p64): 2.5.3 HTTP服务器端推送
p1-2-5-4 (p65): 2.5.4 Web安全防范
p1-2-6 (p74): 2.6本章小结
p1-3 (p75): 第3章 模板
p1-3-1 (p75): 3.1模板基本用法
p1-3-1-1 (p76): 3.1.1创建模板
p1-3-1-2 (p77): 3.1.2模板语法
p1-3-1-3 (p78): 3.1.3渲染模板
p1-3-2 (p80): 3.2模板辅助工具
p1-3-2-1 (p80): 3.2.1上下文
p1-3-2-2 (p82): 3.2.2全局对象
p1-3-2-3 (p83): 3.2.3过滤器
p1-3-2-4 (p85): 3.2.4测试器
p1-3-2-5 (p87): 3.2.5模板环境对象
p1-3-3 (p88): 3.3模板结构组织
p1-3-3-1 (p88): 3.3.1局部模板
p1-3-3-2 (p88): 3.3.2宏
p1-3-3-3 (p90): 3.3.3模板继承
p1-3-4 (p93): 3.4模板进阶实践
p1-3-4-1 (p93): 3.4.1空白控制
p1-3-4-2 (p94): 3.4.2加载静态文件
p1-3-4-3 (p98): 3.4.3消息闪现
p1-3-4-4 (p100): 3.4.4自定义错误页面
p1-3-4-5 (p101): 3.4.5 JavaScript和CSS中的Jinja2
p1-3-5 (p103): 3.5本章小结
p1-4 (p104): 第4章 表单
p1-4-1 (p104): 4.1 HTML表单
p1-4-2 (p106): 4.2使用Flask-WTF处理表单
p1-4-2-1 (p106): 4.2.1定义WTForms表单类
p1-4-2-2 (p109): 4.2.2输出HTML代码
p1-4-2-3 (p110): 4.2.3在模板中渲染表单
p1-4-3 (p112): 4.3处理表单数据
p1-4-3-1 (p112): 4.3.1提交表单
p1-4-3-2 (p113): 4.3.2验证表单数据
p1-4-3-3 (p117): 4.3.3在模板中渲染错误消息
p1-4-4 (p118): 4.4表单进阶实践
p1-4-4-1 (p118): 4.4.1设置错误消息语言
p1-4-4-2 (p120): 4.4.2使用宏渲染表单
p1-4-4-3 (p121): 4.4.3自定义验证器
p1-4-4-4 (p122): 4.4.4文件上传
p1-4-4-5 (p129): 4.4.5使用Flask-CKEditor集成富文本编辑器
p1-4-4-6 (p132): 4.4.6单个表单多个提交按钮
p1-4-4-7 (p133): 4.4.7单个页面多个表单
p1-4-5 (p137): 4.5本章小结
p1-5 (p138): 第5章 数据库
p1-5-1 (p139): 5.1数据库的分类
p1-5-1-1 (p139): 5.1.1 SQL
p1-5-1-2 (p139): 5.1.2 NoSQL
p1-5-1-3 (p140): 5.1.3如何选择?
p1-5-2 (p140): 5.2 ORM魔法
p1-5-3 (p142): 5.3使用Flask-SQLAlchemy管理数据库
p1-5-3-1 (p142): 5.3.1连接数据库服务器
p1-5-3-2 (p144): 5.3.2定义数据库模型
p1-5-3-3 (p145): 5.3.3创建数据库和表
p1-5-4 (p146): 5.4数据库操作
p1-5-4-1 (p147): 5.4.1 CRUD
p1-5-4-2 (p151): 5.4.2在视图函数里操作数据库
p1-5-5 (p156): 5.5定义关系
p1-5-5-1 (p157): 5.5.1配置Python Shell上下文
p1-5-5-2 (p158): 5.5.2一对多
p1-5-5-3 (p164): 5.5.3多对一
p1-5-5-4 (p165): 5.5.4一对一
p1-5-5-5 (p166): 5.5.5多对多
p1-5-6 (p168): 5.6更新数据库表
p1-5-6-1 (p168): 5.6.1重新生成表
p1-5-6-2 (p169): 5.6.2使用Flask-Migrate迁移数据库
p1-5-6-3 (p171): 5.6.3开发时是否需要迁移?
p1-5-7 (p172): 5.7数据库进阶实践
p1-5-7-1 (p172): 5.7.1级联操作
p1-5-7-2 (p175): 5.7.2事件监听
p1-5-8 (p177): 5.8本章小结
p1-6 (p178): 第6章 电子邮件
p1-6-1 (p179): 6.1使用Flask-Mail发送电子邮件
p1-6-1-1 (p179): 6.1.1配置Flask-Mail
p1-6-1-2 (p182): 6.1.2构建邮件数据
p1-6-1-3 (p182): 6.1.3发送邮件
p1-6-2 (p183): 6.2使用事务邮件服务SendGird
p1-6-2-1 (p183): 6.2.1注册SendGird
p1-6-2-2 (p185): 6.2.2 SendGrid SMTP转发
p1-6-2-3 (p185): 6.2.3 SendGrid Web API转发
p1-6-3 (p188): 6.3电子邮件进阶实践
p1-6-3-1 (p188): 6.3.1提供HTML正文
p1-6-3-2 (p189): 6.3.2使用Jinja2模板组织邮件正文
p1-6-3-3 (p191): 6.3.3异步发送邮件
p1-6-4 (p192): 6.4本章小结
p2 (p194): 第二部分 实战篇
p2-1 (p194): 第7章 留言板
p2-1-1 (p195): 7.1使用包组织代码
p2-1-1-1 (p196): 7.1.1配置文件
p2-1-1-2 (p197): 7.1.2创建程序实例
p2-1-2 (p198): 7.2 Web程序开发流程
p2-1-2-1 (p199): 7.2.1程序功能设计
p2-1-2-2 (p200): 7.2.1前端页面开发
p2-1-2-3 (p202): 7.2.3后端程序开发
p2-1-3 (p206): 7.3使用Bootstrap-Flask简化页面编写
p2-1-3-1 (p207): 7.3.1加载资源文件
p2-1-3-2 (p207): 7.3.2快捷渲染表单
p2-1-4 (p209): 7.4使用 Flask-Moment本地化日期和时间
p2-1-4-1 (p209): 7.4.1本地化前的准备
p2-1-4-2 (p209): 7.4.2使用Flask-Moment集成Moment…js
p2-1-4-3 (p210): 7.4.3渲染时间日期
p2-1-5 (p213): 7.5使用Faker生成虚拟数据
p2-1-6 (p215): 7.6使用Flask-DebugToolbar调试程序
p2-1-7 (p216): 7.7 Flask配置的两种组织形式
p2-1-7-1 (p217): 7.7.1环境变量优先
p2-1-7-2 (p217): 7.7.2实例文件夹覆盖
p2-1-8 (p218): 7.8本章小结
p2-2 (p219): 第8章 个人博客
p2-2-1 (p220): 8.1大型项目结构
p2-2-1-1 (p221): 8.1.1使用蓝本模块化程序
p2-2-1-2 (p227): 8.1.2使用类组织配置
p2-2-1-3 (p228): 8.1.3使用工厂函数创建程序实例
p2-2-2 (p232): 8.2编写程序骨架
p2-2-2-1 (p233): 8.2.1数据库
p2-2-2-2 (p240): 8.2.2模板
p2-2-2-3 (p246): 8.2.3表单
p2-2-2-4 (p249): 8.2.4视图函数
p2-2-2-5 (p249): 8.2.5电子邮件支持
p2-2-3 (p251): 8.3编写博客前台
p2-2-3-1 (p251): 8.3.1分页显示文章列表
p2-2-3-2 (p258): 8.3.2显示文章正文
p2-2-3-3 (p259): 8.3.3文章固定链接
p2-2-3-4 (p262): 8.3.4显示分类文章列表
p2-2-3-5 (p263): 8.3.5显示评论列表
p2-2-3-6 (p266): 8.3.6发表评论与回复
p2-2-3-7 (p267): 8.3.7支持回复评论
p2-2-3-8 (p269): 8.3.8网站主题切换
p2-2-4 (p271): 8.4初始化博客
p2-2-4-1 (p271): 8.4.1安全存储密码
p2-2-4-2 (p273): 8.4.2创建管理员用户
p2-2-5 (p275): 8.5使用Flask-Login管理用户认证
p2-2-5-1 (p276): 8.5.1获取当前用户
p2-2-5-2 (p277): 8.5.2登入用户
p2-2-5-3 (p278): 8.5.3登出用户
p2-2-5-4 (p279): 8.5.4视图保护
p2-2-6 (p281): 8.6使用CSRFProtect实现CSRF保护
p2-2-7 (p283): 8.7编写博客后台
p2-2-7-1 (p284): 8.7.1文章管理
p2-2-7-2 (p291): 8.7.2评论管理
p2-2-7-3 (p297): 8.7.3分类管理
p2-2-8 (p298): 8.8本章小结
p2-3 (p299): 第9章 图片社交网站
p2-3-1 (p300): 9.1项目组织架构
p2-3-1-1 (p300): 9.1.1功能式架构
p2-3-1-2 (p302): 9.1.2分区式架构
p2-3-1-3 (p303): 9.1.3混合式架构
p2-3-1-4 (p303): 9.1.4如何选择
p2-3-2 (p303): 9.2编写程序骨架
p2-3-2-1 (p305): 9.2.1数据库模型与虚拟数据
p2-3-2-2 (p307): 9.2.2模板与静态文件
p2-3-3 (p308): 9.3高级用户认证
p2-3-3-1 (p309): 9.3.1用户注册
p2-3-3-2 (p311): 9.3.2验证邮箱地址
p2-3-3-3 (p315): 9.3.3使用装饰器过滤未确认用户
p2-3-3-4 (p316): 9.3.4密码重置
p2-3-4 (p319): 9.4基于用户角色的权限管理
p2-3-4-1 (p319): 9.4.1角色与权限模型
p2-3-4-2 (p320): 9.4.2设置角色与权限
p2-3-4-3 (p321): 9.4.3写入角色与权限
p2-3-4-4 (p323): 9.4.4验证用户权限
p2-3-5 (p325): 9.5使用Flask-Dropzone优化文件上传
p2-3-5-1 (p326): 9.5.1配置Flask-Dropzone
p2-3-5-2 (p328): 9.5.2渲染上传区域
p2-3-5-3 (p329): 9.5.3处理并保存上传图片
p2-3-6 (p334): 9.6使用Flask-Avatars处理用户头像
p2-3-6-1 (p335): 9.6.1默认头像
p2-3-6-2 (p335): 9.6.2生成随机头像
p2-3-7 (p337): 9.7图片展示与管理
p2-3-7-1 (p338): 9.7.1在用户主页显示图片列表
p2-3-7-2 (p341): 9.7.2图片详情页
p2-3-7-3 (p342): 9.7.3上一张下一张跳转
p2-3-7-4 (p344): 9.7.4删除确认模态框
p2-3-7-5 (p346): 9.7.5举报图片
p2-3-7-6 (p347): 9.7.6图片描述
p2-3-7-7 (p349): 9.7.7图片标签
p2-3-7-8 (p353): 9.7.8用户资料弹窗
p2-3-8 (p358): 9.8收藏图片
p2-3-8-1 (p358): 9.8.1使用关联模型表示多对多关系
p2-3-8-2 (p360): 9.8.2添加和取消收藏
p2-3-8-3 (p362): 9.8.3收藏者和收藏页面
p2-3-9 (p365): 9.9用户关注
p2-3-9-1 (p365): 9.9.1自引用多对多关系
p2-3-9-2 (p366): 9.9.2关注与取消关注
p2-3-9-3 (p369): 9.9.3显示关注用户列表
p2-3-9-4 (p371): 9.9.4使用AJAX在弹窗中执行关注操作
p2-3-10 (p378): 9.10消息提醒
p2-3-10-1 (p379): 9.10.1提醒消息在数据库中的表示
p2-3-10-2 (p379): 9.10.2创建提醒
p2-3-10-3 (p380): 9.10.3显示和管理提醒
p2-3-10-4 (p382): 9.10.4通过轮询实时更新未读计数
p2-3-11 (p384): 9.11用户资料与账户设置
p2-3-11-1 (p385): 9.11.1编辑个人资料
p2-3-11-2 (p386): 9.11.2自定义头像
p2-3-11-3 (p392): 9.11.3更改密码
p2-3-11-4 (p394): 9.11.4提醒消息开关
p2-3-11-5 (p395): 9.11.5将收藏设为仅自己可见
p2-3-11-6 (p396): 9.11.6注销账户
p2-3-12 (p397): 9.12首页与探索
p2-3-12-1 (p399): 9.12.1获取正在关注用户的图片
p2-3-12-2 (p401): 9.12.2使用联结和分组查询获取热门标签
p2-3-12-3 (p402): 9.12.3使用数据库通用函数获取随机图片
p2-3-13 (p403): 9.13使用Flask-Whooshee实现全文搜索
p2-3-13-1 (p404): 9.13.1创建索引
p2-3-13-2 (p405): 9.13.2搜索表单
p2-3-13-3 (p406): 9.13.3显示搜索结果
p2-3-14 (p407): 9.14编写网站后台
p2-3-14-1 (p408): 9.14.1用户管理
p2-3-14-2 (p411): 9.14.2资源管理
p2-3-14-3 (p412): 9.14.3面向管理员的用户资料编辑
p2-3-15 (p413): 9.15本章小结
p2-4 (p415): 第10章 待办事项程序
p2-4-1 (p417): 10.1使用JavaScript和AJAX编写单页程序
p2-4-1-1 (p418): 10.1.1单页程序的模板组织
p2-4-1-2 (p421): 10.1.2在根页面内切换子页面
p2-4-1-3 (p423): 10.1.3生成测试账户
p2-4-1-4 (p424): 10.1.4添加新待办条目
p2-4-2 (p426): 10.2国际化与本地化
p2-4-2-1 (p427): 10.2.1使用Flask-Babel集成Babel
p2-4-2-2 (p427): 10.2.2区域和语言
p2-4-2-3 (p432): 10.2.3文本的国际化
p2-4-2-4 (p433): 10.2.4文本的本地化
p2-4-2-5 (p438): 10.2.5时间与日期的本地化
p2-4-3 (p440): 10.3设计并编写Web API
p2-4-3-1 (p441): 10.3.1认识Web API
p2-4-3-2 (p443): 10.3.2设计优美实用的Web API
p2-4-3-3 (p446): 10.3.3使用Flask编写Web API
p2-4-3-4 (p453): 10.3.4使用OAuth认证
p2-4-3-5 (p461): 10.3.5资源的序列化
p2-4-3-6 (p465): 10.3.6资源的反序列化
p2-4-3-7 (p470): 10.3.7 Web API的测试与发布
p2-4-4 (p473): 10.4本章小结
p2-5 (p474): 第11章 在线聊天室
p2-5-1 (p476): 11.1编写程序骨架
p2-5-2 (p477): 11.2 Gravatar头像
p2-5-3 (p480): 11.3使用Flask-SocketIO建立实时双向通信
p2-5-3-1 (p481): 11.3.1建立Socket.IO连接
p2-5-3-2 (p482): 11.3.2一条消息的旅程
p2-5-3-3 (p485): 11.3.3在线人数统计
p2-5-3-4 (p486): 11.3.4通信频道分离
p2-5-4 (p489): 11.4使用Flask-OAuthlib实现第三方登录
p2-5-4-1 (p490): 11.4.1编写OAuth客户端
p2-5-4-2 (p491): 11.4.2注册OAuth程序
p2-5-4-3 (p493): 11.4.3处理OAuth2授权
p2-5-4-4 (p505): 11.4.4处理OAuth1授权
p2-5-5 (p507): 11.5聊天室功能增强
p2-5-5-1 (p507): 11.5.1无限滚动加载历史消息
p2-5-5-2 (p510): 11.5.2 Markdown支持
p2-5-5-3 (p512): 11.5.3代码语法高亮
p2-5-5-4 (p515): 11.5.4标签页消息提醒
p2-5-5-5 (p517): 11.5.5浏览器桌面通知
p2-5-5-6 (p519): 11.5.6消息管理
p2-5-6 (p519): 11.6本章小结
p3 (p522): 第三部分 进阶篇
p3-1 (p522): 第12章 自动化测试
p3-1-1 (p522): 12.1认识自动化测试
p3-1-2 (p523): 12.2 Flask测试客户端
p3-1-3 (p525): 12.3使用unittest编写单元测试
p3-1-3-1 (p525): 12.3.1 Flask程序的测试固件
p3-1-3-2 (p527): 12.3.2编写测试用例
p3-1-3-3 (p533): 12.3.3组织测试
p3-1-3-4 (p535): 12.3.4运行测试
p3-1-4 (p536): 12.4使用Selenium进行用户界面测试
p3-1-4-1 (p537): 12.4.1安装浏览器与驱动
p3-1-4-2 (p538): 12.4.2准备测试环境
p3-1-4-3 (p539): 12.4.3编写测试代码
p3-1-5 (p541): 12.5使用Coverage.py计算测试覆盖率
p3-1-5-1 (p542): 12.5.1基本用法
p3-1-5-2 (p543): 12.5.2获取测试覆盖率
p3-1-6 (p544): 12.6使用Flake8检查代码质量
p3-1-7 (p546): 12.7本章小结
p3-2 (p547): 第13章 性能优化
p3-2-1 (p548): 13.1程序性能分析
p3-2-1-1 (p548): 13.1.1函数性能分析
p3-2-1-2 (p549): 13.1.2数据库查询分析
p3-2-2 (p551): 13.2使用Flask-Caching设置缓存
p3-2-2-1 (p552): 13.2.1缓存视图函数
p3-2-2-2 (p554): 13.2.2缓存其他函数
p3-2-2-3 (p554): 13.2.3更新缓存
p3-2-2-4 (p556): 13.2.4使用Redis作为缓存后端
p3-2-3 (p557): 13.3使用Flask-Assets优化静态资源
p3-2-3-1 (p558): 13.3.1注册资源集
p3-2-3-2 (p559): 13.3.2生成资源集文件
p3-2-3-3 (p559): 13.3.3在模板中加载资源集
p3-2-4 (p562): 13.4本章小结
p3-3 (p563): 第14章 部署上线
p3-3-1 (p563): 14.1传统部署VS云部署
p3-3-2 (p564): 14.2基本部署流程
p3-3-3 (p566): 14.3部署前的准备
p3-3-3-1 (p566): 14.3.1更新程序配置
p3-3-3-2 (p567): 14.3.2创建生产环境专用的程序实例
p3-3-3-3 (p568): 14.3.3设置迁移工具
p3-3-3-4 (p568): 14.3.4程序日志
p3-3-3-5 (p572): 14.3.5手动导入环境变量
p3-3-3-6 (p572): 14.3.6 HTTPS转发
p3-3-4 (p573): 14.4部署到Linux服务器
p3-3-4-1 (p573): 14.4.1使用OpenSSH登录远程主机
p3-3-4-2 (p574): 14.4.2安装基本库和工具
p3-3-4-3 (p575): 14.4.3安全防护措施
p3-3-4-4 (p578): 14.4.4推送代码并初始化程序环境
p3-3-4-5 (p579): 14.4.5使用Gunicom运行程序
p3-3-4-6 (p580): 14.4.6使用Nginx提供反向代理
p3-3-4-7 (p584): 14.4.7使用Supervisor管理进程
p3-3-4-8 (p586): 14.4.8更新部署后的程序
p3-3-5 (p587): 14.5部署到PythonAnywhere
p3-3-5-1 (p587): 14.5.1反向代理设置
p3-3-5-2 (p588): 14.5.2创建PythonAnywhere程序
p3-3-5-3 (p588): 14.5.3推送代码并初始化程序环境
p3-3-5-4 (p590): 14.5.4创建数据库
p3-3-5-5 (p591): 14.5.5设置虚拟环境
p3-3-5-6 (p592): 14.5.6静态文件
p3-3-5-7 (p592): 14.5.7运行和更新程序
p3-3-6 (p594): 14.6部署到Heroku
p3-3-6-1 (p595): 14.6.1通过Heroku Git部署
p3-3-6-2 (p601): 14.6.2使用GitHub部署
p3-3-7 (p603): 14.7下一步做什么?
p3-3-8 (p604): 14.8本章小结
p3-4 (p605): 第15章 Flask扩展开发
p3-4-1 (p606): 15.1扩展的命名
p3-4-2 (p606): 15.2扩展项目骨架
p3-4-3 (p608): 15.3编写扩展类
p3-4-4 (p610): 15.4添加扩展配置
p3-4-5 (p610): 15.5实现扩展功能
p3-4-5-1 (p611): 15.5.1加载静态资源
p3-4-5-2 (p612): 15.5.2创建分享组件
p3-4-5-3 (p613): 15.5.3在移动设备上隐藏
p3-4-6 (p614): 15.6开源发布前的准备
p3-4-6-1 (p614): 15.6.1添加文档字符串与注释
p3-4-6-2 (p615): 15.6.2编写README与文档
p3-4-6-3 (p616): 15.6.3为打包做准备
p3-4-6-4 (p621): 15.6.4编写示例程序
p3-4-6-5 (p621): 15.6.5编写单元测试
p3-4-7 (p622): 15.7发布到PyPI
p3-4-7-1 (p623): 15.7.1创建PypI账号
p3-4-7-2 (p623): 15.7.2使用setuptools打包
p3-4-7-3 (p625): 15.7.3使用twine上传
p3-4-8 (p625): 15.8编写良好的扩展
p3-4-9 (p627): 15.9本章小结
p3-5 (p628): 第16章 Flask工作原理与机制解析
p3-5-1 (p628): 16.1阅读 Flask源码
p3-5-1-1 (p628): 16.1.1获取Flask源码
p3-5-1-2 (p629): 16.1.2如何阅读源码
p3-5-1-3 (p637): 16.1.3 Flask发行版本分析
p3-5-2 (p638): 16.2 Flask的设计理念
p3-5-2-1 (p638): 16.2.1“微”框架
p3-5-2-2 (p638): 16.2.2两个核心依赖
p3-5-2-3 (p638): 16.2.3显式程序对象
p3-5-2-4 (p639): 16.2.4本地上下文
p3-5-2-5 (p640): 16.2.5三种程序状态
p3-5-2-6 (p641): 16.2.6丰富的自定义支持
p3-5-3 (p641): 16.3 Flask与WSGI
p3-5-3-1 (p642): 16.3.1 WSGI程序
p3-5-3-2 (p643): 16.3.2 WSGI服务器
p3-5-3-3 (p644): 16.3.3中间件
p3-5-4 (p646): 16.4 Flask的工作流程与机制
p3-5-4-1 (p646): 16.4.1 Flask中的请求响应循环
p3-5-4-2 (p649): 16.4.2路由系统
p3-5-4-3 (p653): 16.4.3本地上下文
p3-5-4-4 (p665): 16.4.4请求与响应对象
p3-5-4-5 (p667): 16.4.5 session
p3-5-4-6 (p674): 16.4.6蓝本
p3-5-4-7 (p677): 16.4.7模板渲染
p3-5-5 (p680): 16.5本章小结
p4 (p681): 附录A Flask资源
备用描述
本书从基础知识到进阶实战,再到Flask原理和工作机制解析,涵盖完整的Flask Web开发学习路径.全书从开发环境的搭建,项目的建立与组织到程序的编写,再到自动化测试,性能优化,后到生产环境的搭建和部署上线,详细讲解完整的Flask Web程序开发流程,用5个综合性案例将不同难度层级的知识点及具体原理串联起来,让你在开发技巧,原理实现和编程思想上都获得相应的提升
开源日期
2021-12-17
🚀 快速下载
成为会员以支持书籍、论文等的长期保存。为了感谢您对我们的支持,您将获得高速下载权益。❤️
如果您在本月捐款,您将获得双倍的快速下载次数。
🐢 低速下载
由可信的合作方提供。 更多信息请参见常见问题解答。 (可能需要验证浏览器——无限次下载!)
- 低速服务器(合作方提供) #1 (稍快但需要排队)
- 低速服务器(合作方提供) #2 (稍快但需要排队)
- 低速服务器(合作方提供) #3 (稍快但需要排队)
- 低速服务器(合作方提供) #4 (稍快但需要排队)
- 低速服务器(合作方提供) #5 (无需排队,但可能非常慢)
- 低速服务器(合作方提供) #6 (无需排队,但可能非常慢)
- 低速服务器(合作方提供) #7 (无需排队,但可能非常慢)
- 低速服务器(合作方提供) #8 (无需排队,但可能非常慢)
- 低速服务器(合作方提供) #9 (无需排队,但可能非常慢)
- 下载后: 在我们的查看器中打开
所有选项下载的文件都相同,应该可以安全使用。即使这样,从互联网下载文件时始终要小心。例如,确保您的设备更新及时。
外部下载
-
对于大文件,我们建议使用下载管理器以防止中断。
推荐的下载管理器:JDownloader -
您将需要一个电子书或 PDF 阅读器来打开文件,具体取决于文件格式。
推荐的电子书阅读器:Anna的档案在线查看器、ReadEra和Calibre -
使用在线工具进行格式转换。
推荐的转换工具:CloudConvert和PrintFriendly -
您可以将 PDF 和 EPUB 文件发送到您的 Kindle 或 Kobo 电子阅读器。
推荐的工具:亚马逊的“发送到 Kindle”和djazz 的“发送到 Kobo/Kindle” -
支持作者和图书馆
✍️ 如果您喜欢这个并且能够负担得起,请考虑购买原版,或直接支持作者。
📚 如果您当地的图书馆有这本书,请考虑在那里免费借阅。
下面的文字仅以英文继续。
总下载量:
“文件的MD5”是根据文件内容计算出的哈希值,并且基于该内容具有相当的唯一性。我们这里索引的所有影子图书馆都主要使用MD5来标识文件。
一个文件可能会出现在多个影子图书馆中。有关我们编译的各种数据集的信息,请参见数据集页面。
有关此文件的详细信息,请查看其JSON 文件。 Live/debug JSON version. Live/debug page.