书籍作者:黄勇 | ISBN:9787302609285 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:10267 |
创建日期:2023-04-18 | 发布日期:2023-04-18 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
《Flask Web全栈开发实战》围绕 Flask 框架,详细地讲解了使用 Flask 开发网站的各项技术要点。全书共 11 章,首先讲解了Flask 项目开发中的环境搭建、项目配置、URL 与视图、Jinja2 模板、数据库、表单、Flask 进阶、缓存系统等。然后拓展了知识面,在项目实战中分别介绍了 RESTful API、邮箱验证码、Redis 缓存、Celery 异步任务、登录授权机制、角色权限管理、富文本编辑器、头像管理、文件上传以及 Nginx、Gunicorn 部署
等技术要点;在 WebSocket 实战中讲解了 Flask 中使用 WebSocket 开发项目的全部过程。最后讲解了 Flask 异步编程。通过《Flask Web全栈开发实战》的学习,读者能够熟练掌握 Flask Web 开发技术。
《Flask Web全栈开发实战》适合没有 Flask 开发经验或者 Flask 基础比较薄弱、想要系统学习 Flask Web 开发技术的读者 学习。
从Flask基础到Flask进阶,再到企业级论坛项目实战以及WebSocket在线聊天系统实战,囊括真实工作场景中绝大部分技术要点。
初学者可以夯实基础,程序员可以提升技能,提高竞争力。
《Flask Web全栈开发实战》的目标读者是没有 Flask 开发经验或者有少量 Flask 使用经验的读者。通过学习可以熟练掌握 Flask Web 开发技术,包括但不限于以下岗位。
81 ①Python 全栈开发工程师:可以掌握前后端开发的技术要点,能快速开发 Web 应用项目。
81 ②测试开发工程师:能有效提高自动化测试平台的开发能力。
81 ③运维开发工程师:能有效提高自动化运维平台的开发能力,以及阅读相关开源项目源码的能力。
81 ④数据/算法工程师:可以结合算法模型,将模型服务化,
创作背景
当前,Python 的就业前景还是非常可观的,国内 Python 人才的需求呈大规模上升之势,薪资水平也是水涨船高。尤其在 Linux 运维、Python Web 网站、Python 自动化测试、
数据分析和人工智能等诸多领域,对 Python 人才的需求非常旺盛。Flask 诞生于 2010 年,是作者 Armin ronacher 用 Python 语言编写的一款轻量级 Web
开发框架。时至今日,使用 Flask 开发 Web 应用程序的人越来越多,Flask 微框架也越来越受到关注。2021 年 5 月,Flask 2.0 版本发布,除了一些新增的特性,Flask 2.0 实现了基
本的异步支持。
使用 Flask 框架的优势:可以大大降低开发难度,提高开发效率,让快速、高效的 Web开发成为可能;可以带来系统稳定性和可扩展性的提升;Flask 自由、灵活、可扩展性强、
第三方库的选择面广;对于初学者来说,入门门槛很低,简单易学,即便没有多少 Web开发经验,也能很快做出网站,大大节约了初学者的学习成本。
本书围绕 Flask 框架展开讲解,从理论到实战,带领读者实现从零基础入门到动手开发项目的技术飞跃。书中贯穿了笔者总结的大量开发经验与实践思考,对开发人员有很大的借鉴意义。
目标读者
本书的目标读者是没有 Flask 开发经验或者有少量 Flask 使用经验的读者。通过学习本书可以熟练掌握 Flask Web 开发技术,包括但不限于以下岗位。
Python 全栈开发工程师:通过学习本书,可以掌握前后端开发的技术要点,能快速开发 Web 应用项目。
测试开发工程师:使用本书讲解的知识点,能有效提高自动化测试平台的开发能力。
运维开发工程师:使用本书讲解的知识点,能有效提高自动化运维平台的开发能力,以及阅读相关开源项目源码的能力。
数据/算法工程师:使用本书讲解的知识点,可以结合算法模型,将模型服务化,供普通用户使用。
内容提要
本书的内容由浅入深,从独立知识点的详细讲解,到项目实战的步步剖析,全面而具体。前面 8 章讲解了 Flask 的基础知识,第 9 章和第 10 章分别讲解了论坛项目和在线即时
聊天项目实战,第 11 章则作为补充内容,讲解了 Flask 异步编程。下面分别介绍每章的知识点。
第 1 章:对 Flask 做了简要介绍,以及讲解了开发 Flask 项目的环境搭建,后续章节内容都是基于此章搭建的开发环境来讲解的。
第 2 章:详细讲解如何配置 Flask 项目,以及不同软件的配置方式。
第 3 章:对网站开发中最基本的 URL 与视图的绑定、URL 传参、请求方法、页面重定向等进行详细讲解,学完本章内容读者会明白一个网站是如何与浏览器进行交互的。
第 4 章:主要讲解了 Jinja2 模板的使用。Jinja2 作为 Flask 默认的模板引擎,有一套自己的渲染语法。Jinja2 的功能非常强大,能够直接读取数据库数据,并使用函数对数据进行操作,学好 Jinja2 模板才能做出一个优美且实用的页面。
第 5 章:数据库是一个动态网站必备的模块。本章详细讲解 Flask-SQLAlchemy使用 ORM 操作 MySQL 数据库的技术要点,实现不用写一行 SQL 代码就能操作数据库的需求,从而大大提高开发效率。
第 6 章:一个网站中经常需要提交数据到服务器,这时候就需要用到表单。Flask中的表单是传统 HTML 表单的加强版。本章除了讲解 Flask 表单的使用方式以外,还加入了作者的一些使用经验。
第 7 章:经过前面 6 章的学习后,读者基本可以独立使用 Flask 开发网站了,通过本章进阶内容的学习,可以学会 Flask 更高级的用法,以及对 Flask 原理有更深入的理解。
第 8 章:在网站的访问达到一定数量级后,需要使用缓存来提高网站的响应速度,本章将会讲解纯内存型的 Memcached 缓存系统,以及 key-value 带有同步机制的Redis 缓存系统。
第 9 章:通过前面对 Flask 知识点的掌握,读者已经有能力开发一个完整的 Flask项目了。本章从零开始讲解实现一个论坛项目的开发过程,包括注册、登录、邮箱验证码、头像、发帖、发布评论等功能。
第 10 章:为了适应市场需求,本章将通过项目实战案例介绍 WebSocket 在 Flask中的应用。学完本章内容后,读者可以有能力开发即时聊天软件,或者将WebSocket 功能集成到项目中,如客服系统、视频弹幕等。
第 11 章:对 Flask 异步编程进行了详细的讲解,首先讲解 asyncio 标准库、aiohttp库、异步版 Flask 安装与异步编程性能,然后带领读者实战,即异步实现发送一些 HTTP 请求。
读者服务
示例代码。
学习视频。
读者可以通过扫码访问本书专享资源官网,获取示例代码、学习视频,加入读者群,下载最新学习资源或反馈书中的问题。
勘误和支持
由于笔者水平有限,书中难免会有疏漏和不妥之处,恳请广大读者批评指正。
致谢
首先感谢清华大学出版社的杜一诗编辑,感谢她这几个月以来对我的支持和鼓励,引导我完成了本书的编写工作。另外感谢所有支持我课程的粉丝和学员,是你们的支持才让
我有动力和勇气完成此书。最后感谢我的家人对我的支持和陪伴,本书也是我送给女儿的出生礼物,希望她长大后有机会阅读到本书。
黄 勇
2021 年 10 月于长沙
第1章 Flask前奏 1
1.1 Flask简介 1
1.2 环境搭建 1
1.2.1 Python环境 2
1.2.2 Flask版本 3
1.2.3 开发软件 4
第2章 项目配置 9
2.1 Debug模式、Host、Port配置 9
2.1.1 Debug模式 9
2.1.2 设置Host和Port 13
2.2 在app.config中添加配置 18
2.2.1 使用app.config配置 18
2.2.2 使用Python配置文件 19
第3章 URL与视图 20
3.1 定义URL 21
3.1.1 定义无参数的URL 22
3.1.2 定义有参数的URL 22
3.2 HTTP请求方法 27
3.3 页面重定向 29
3.4 构造URL 30
第4章 Jinja2模板 32
4.1 模板的基本使用 32
4.1.1 渲染模板 32
4.1.2 渲染变量 34
4.2 过滤器和测试器 38
4.2.1 自定义过滤器 38
4.2.2 Jinja2内置过滤器 39
4.2.3 测试器 42
4.3 控制语句 44
4.3.1 if判断语句 44
4.3.2 for循环语句 45
4.4 模板结构 51
4.4.1 宏和import语句 51
4.4.2 模板继承 52
4.4.3 引入模板 54
4.5 模板环境 55
4.5.1 模板上下文 55
4.5.2 全局函数 56
4.5.3 Flask模板环境 57
4.6 其他 58
4.6.1 转义 58
4.6.2 加载静态文件 59
4.6.3 闪现消息 59
第5章 数据库 61
5.1 准备工作 61
5.1.1 MySQL软件 61
5.1.2 Python操作MySQL驱动 61
5.1.3 Flask-SQLAlchemy 62
5.2 Flask-SQLAlchemy的基本使用 62
5.2.1 连接MySQL 62
5.2.2 ORM模型 63
5.2.3 CRUD操作 66
5.3 表关系 70
5.3.1 外键 71
5.3.2 一对多关系 71
5.3.3 一对一关系 74
5.3.4 多对多关系 75
5.3.5 级联操作 77
5.4 ORM模型迁移 80
5.4.1 创建迁移对象 80
5.4.2 初始化迁移环境 81
5.4.3 生成迁移脚本 81
5.4.4 执行迁移脚本 81
第6章 表单 83
6.1 表单验证 83
6.1.1 表单类编写 85
6.1.2 视图函数中使用表单 87
6.1.3 自定义验证字段 89
6.2 渲染表单模板 90
6.3 CSRF攻击 93
第7章 Flask进阶 98
7.1 类视图 98
7.1.1 基本使用 98
7.1.2 方法限制 99
7.1.3 基于方法的类视图 100
7.1.4 添加装饰器 101
7.2 蓝图 101
7.2.1 基本使用 101
7.2.2 寻找模板 102
7.2.3 寻找静态文件 102
7.3 cookie和session 103
7.3.1 关于cookie和session的介绍 103
7.3.2 Flask中使用cookie和session 104
7.4 request对象 105
7.5 Flask信号机制 106
7.5.1 自定义信号 106
7.5.2 Flask内置信号 107
7.6 常用钩子函数 108
7.7 上下文 109
7.7.1 线程隔离对象 110
7.7.2 LocalStack类 111
7.7.3 LocalProxy类 114
第8章 缓存系统 117
8.1 Memcached 117
8.1.1 安装Memcached 117
8.1.2 telnet操作Memcached 118
8.1.3 Python操作Memcached 121
8.1.4 Memcached的安全性 122
8.2 Redis 122
8.2.1 Redis使用场景 122
8.2.2 Redis和Memcached比较 123
8.2.3 Redis在Ubuntu中的安装与
使用 123
8.2.4 Redis操作命令 125
8.2.5 同步数据到硬盘 130
8.2.6 设置密码 131
8.2.7 Python操作Redis 132
第9章 项目实战 134
9.1 创建项目 135
9.1.1 config.py文件 137
9.1.2 exts.py文件 139
9.1.3 blueprints模块 140
9.1.4 models模块 142
9.2 创建用户相关模型 143
9.2.1 创建权限和角色模型 143
9.2.2 创建权限和角色 146
9.2.3 创建用户模型 150
9.2.4 创建测试用户 154
9.2.5 创建管理员 155
9.3 注册 155
9.3.1 渲染注册模板 155
9.3.2 使用Flask-Mail发送邮箱验证码 160
9.3.3 使用Flask-Caching和Redis缓存
验证码 165
9.3.4 使用Celery发送邮件 167
9.3.5 RESTful API 170
9.3.6 CSRF保护 173
9.3.7 使用AJAX获取邮箱验证码 173
9.3.8 实现注册功能 176
9.4 登录 179
9.5 发布帖子 182
9.5.1 添加帖子相关模型 183
9.5.2 初始化板块数据 184
9.5.3 渲染发布帖子模板 184
9.5.4 使用wangEditor富文本编辑器 186
9.5.5 未登录限制 191
9.5.6 服务端实现发帖功能 193
9.5.7 使用AJAX发布帖子 194
9.6 首页 195
9.6.1 生成帖子测试数据 197
9.6.2 使用Flask-Paginate实现分页 198
9.6.3 过滤帖子 200
9.7 帖子详情 202
9.7.1 动态加载帖子详情数据 202
9.7.2 发布评论 203
9.8 个人中心 205
9.8.1 使用Flask-Avatars生成随机
头像 206
9.8.2 修改导航条上的登录状态 209
9.8.3 根据用户显示个人中心 210
9.8.4 修改用户信息 212
9.9 CMS管理系统 215
9.9.1 CMS入口 215
9.9.2 权限管理 216
9.9.3 员工管理页面 219
9.9.4 添加员工 221
9.9.5 编辑员工 223
9.9.6 管理前台用户 225
9.9.7 帖子管理 228
9.9.8 评论管理 230
9.9.9 板块管理 231
9.10 错误处理 231
9.11 日志 233
9.11.1 loggers模块 233
9.11.2 handlers模块 234
9.11.3 filters模块 235
9.11.4 formatters模块 236
9.12 部署 237
9.12.1 导出依赖包 237
9.12.2 使用Git上传代码 237
9.12.3 生产环境的配置 241
9.12.4 安装常用软件 241
9.12.5 配置网站 243
9.12.6 使用Gunicorn部署网站 244
9.12.7 使用Nginx部署网站 246
9.12.8 压力测试 249
第10章 WebSocket实战 252
10.1 安装相应的包 253
10.2 创建SocketIO对象 253
10.3 实现登录 254
10.4 连接和取消连接 257
10.5 获取在线用户 258
10.6 实现单聊 259
10.7 实现群聊 260
10.8 部署项目 261
第11章 Flask异步编程 263
11.1 asyncio标准库 263
11.2 aiohttp库 265
11.3 异步版Flask安装与异步编程性能 266
11.3.1 安装异步版Flask 266
11.3.2 Flask异步编程性能 266
11.3.3 实战—异步发送HTTP请求 267
11.3.4 使用异步SQLAlchemy 269
11.3.5 Jinja2开启异步支持 271