Flask 2+Vue.js 3实战派——Python Web开发与运维
定 价:118 元
当前图书已被 47 所学校荐购过!
查看明细
- 作者:杨永刚
- 出版时间:2024/6/1
- ISBN:9787121478611
- 出 版 社:电子工业出版社
- 中图法分类:TP311.561
- 页码:456
- 纸张:
- 版次:01
- 开本:16开
本书主要介绍了Flask编程开发与运维过程中涉及的方法、技巧和实战经验,共5篇。"第1篇 基础”介绍用Flask开发Web应用的基础知识;"第2篇 后台项目实战”通过开发一个商城系统的后台来融合前面章的知识点;"第3篇 进阶”通过Flask Rest Framework框架来设计和实现RESTful风格的接口,以及分层的自动化测试和基于Redis的缓存技术;"第4篇 前台项目实战”使用前后端分离的方式开发商城系统前台,涉及Vue.js、Axios、Vue Router、Vuex、RESTful接口等技术。"第5篇 部署运维”涉及Flask的传统部署,Flask的Docker部署,持续集成,持续交付和持续部署,运维监控。本书通过完整的商城系统实例,融合了Flask开发中涉及的知识点;通过大量实例手把手带领读者从需求、开发、集成、代码安全检测、测试、部署上线等环节践行"软件开发运维一体化”的理念。
微软最有价值专家(MSMVP),20年的IT开发经验,擅长C#、python编程,擅长C/S、B/S编程,具有丰富的项目实战开发经验。曾负责微软全国.NET俱乐部的区域发起与推广,具有丰富的线上线下培训经验。现致力于.NET Core的应用和推广。2007年4月,作为软件创新英雄,在"北大百年讲堂”接受比尔盖茨先生的颁奖。2008年3月,荣获微软十大杰出IT英雄。2008年出版《sharepoint server 2007 案列实战开发》,广受好评。现就职于中国电信新疆公司企业信息化部,在工作期间,先后主持多个大型项目,先后荣获集团科技进步二等奖,省公司科技进步一等奖。高级工程师\软件工程硕士\架构师\省创新杰出人才\通信评标专家\集团公司B级人才\中央企业先进员工。目前作者运营公众号、头条号、百家号,名称均为"Python办公自动化",每周分享技术、职场经验,其中多个技术专栏,受到广大用户的认可。闲暇之余分享点文字、编程、设计等干货。
第1篇 基础
=
第1章 走进Flask /2
1.1 了解Flask /2
1.1.1 Flask的特点 /2
1.1.2 MVC和MTV模式 /3
1.1.3 Flask的核心库 /4
1.1.4 Flask的扩展库 /5
1.2 安装Flask /6
1.2.1 使用国内镜像源加速安装第三方包 /6
1.2.2 安装Python虚拟环境 /6
1.2.3 通过pip命令安装Flask /7
1.3 利用PyCharm编辑器进行Flask开发 /8
1.4 【实战】开发第一个Flask应用 /9
1.4.1 使用PyCharm开发一个Flask程序 /9
1.4.2 初步认识Flask程序 /10
1.5 Flask项目的调试模式 /11
1.6 Flask配置的保存/加载 /12
1.6.1 使用app.config属性保存配置参数 /13
1.6.2 加载配置文件的两种方法 /13
1.7 采用Flask-Script扩展库作为项目的启动方案 /14
1.7.1 安装Flask-Script /14
1.7.2 用Flask-Script替代默认的Flask应用对象 /14
1.7.3 Flask-Script常用的功能 /15
1.8 Flask在后端开发中的作用 /17
=
第2章 网站的入口——Flask的路由和视图 /18
2.1 使用Flask中的路由 /18
2.1.1 使用装饰器@app.route配置路由 /18
2.1.2 使用app.add_url_rule()方法配置路由 /19
2.1.3 查看路由规则 /20
2.1.4 解析动态路由 /21
2.1.5 使用url_for()函数反向解析路由 /21
2.2 认识视图函数 /22
2.2.1 什么是视图函数 /23
2.2.2 视图函数的底层原理 /23
2.2.3 视图处理函数 /30
2.3 认识视图类 /34
2.3.1 什么是视图类 /34
2.3.2 利用视图类进行功能设计 /35
=
第3章 开发页面——基于Jinja 2模板 /37
3.1 Flask模板引擎——Jinja 2 /37
3.1.1 模板变量 /37
3.1.2 模板标签 /39
3.1.3 模板过滤器 /42
3.2 模板的高级用法 /44
3.2.1 模板转义——保证代码的安全 /44
3.2.2 【实战】自定义过滤器 /45
3.2.3 【实战】自定义全局函数 /46
3.2.4 全局模板变量和局部模板变量 /47
3.3 模板继承 /48
3.3.1 【实战】设计母版页 /48
3.3.2 【实战】设计内容页 /49
3.3.3 【实战】设计组件 /50
3.3.4 宏 /51
3.4 配置模板文件 /53
3.4.1 理解HTML、CSS和JavaScript /53
3.4.2 配置静态文件 /53
3.5 闪现消息 /55
=
第4章 使用数据库——基于Flask模型 /58
4.1 认识Flask-SQLAlchemy模块 /58
4.1.1 Flask-SQLAlchemy模块的参数配置 /59
4.1.2 链接常见数据库的写法 /60
4.2 认识Flask模型 /61
4.2.1 定义模型 /61
4.2.2 字段的类型 /62
4.2.3 字段的参数 /63
4.2.4 _ _repr_ _()方法 /65
4.3 使用Flask模型操作数据库 /65
4.3.1 了解ORM /65
4.3.2 创建数据库表 /66
4.3.3 新增数据 /68
4.3.4 查询数据 /69
4.3.5 修改数据 /77
4.3.6 删除数据 /77
4.3.7 执行原生SQL语句 /78
4.3.8 事务处理 /79
4.4 认识和操作Flask模型关系 /81
4.4.1 “一对多”关系 /81
4.4.2 “一对一”关系 /84
4.4.3 “多对多”关系 /86
4.5 数据模型的迁移 /89
4.5.1 实例化Migrate 类 /89
4.5.2 初始化 /90
4.5.3 生成迁移脚本 /90
4.5.4 执行迁移 /91
4.5.5 解决执行迁移过程中的报错 /91
4.5.6 回退到某次修改 /91
4.5.7 从数据库表到模型 /92
=
第5章 展现界面——基于Flask表单 /94
5.1 HTML表单 /94
5.1.1 【实战】用户登录 /95
5.1.2 【实战】使用传统表单上传文件 /96
5.2 Flask表单 /97
5.2.1 认识WTForms和Flask-WTF /98
5.2.2 表单验证 /105
5.2.3 【实战】使用Form-WTF表单上传文件 /108
5.2.4 【实战】使用Flask-Uploads扩展库上传文件 /110
5.3 使用AJAX提交表单 /114
5.3.1 基于jQuery技术实现AJAX /114
5.3.2 在AJAX请求中设置令牌(csrf_token) /114
5.3.3 【实战】使用AJAX实现用户登录 /115
=
第6章 用户认证和权限管理——基于Flask-Login库 /118
6.1 初识Flask-Login库 /118
6.1.1 安装Flask-Login库 /118
6.1.2 Flask-Login库的使用流程 /118
6.2 【实战】利用用户模型实现用户身份认证及状态保持 /120
6.2.1 实例化LoginManager对象 /121
6.2.2 定义用户模型 /121
6.2.3 注册用户 /122
6.2.4 登录用户 /122
6.2.5 退出用户 /123
6.2.6 显示用户首页 /123
6.3 【实战】开发一个Flask用户权限管理模块 /124
6.3.1 建立角色模型、用户模型和权限模型 /124
6.3.2 建立表单 /126
6.3.3 显示角色 /127
6.3.4 修改角色 /128
6.3.5 登录装饰器 /130
6.3.6 权限装饰器 /131
=
第7章 Flask后台管理——基于Flask-Admin库 /133
7.1 使用Flask-Admin库实现后台管理系统 /133
7.1.1 进入后台管理系统 /134
7.1.2 在后台管理系统中设置导航链接并美化页面 /134
7.2 Flask-Admin库的进阶用法 /136
7.2.1 在Admin后台显示自定义的模型 /136
7.2.2 汉化界面 /137
7.2.3 显示中文字段 /138
7.2.4 定制页面功能 /138
7.2.5 上传图片 /140
7.2.6 在列表页面中显示图像 /140
7.2.7 自定义超链接 /141
7.2.8 批量处理 /143
7.2.9 显示“一对多”关系字段 /144
7.2.10 与Flask-Login库结合使用,实现用户认证 /145
=
第2篇 项目入门实战
=
第8章 【实战】使用Flask + Bootstrap框架开发图书管理系统后台 /149
8.1 设计分析 /149
8.1.1 需求分析 /149
8.1.2 架构设计 /150
8.1.3 最终效果 /150
8.2 开发图书管理系统后台 /151
8.2.1 规划工程目录 /151
8.2.2 搭建母版页 /152
8.2.3 开发“出版社管理”模块 /152
8.2.4 开发“作者管理”模块 /160
8.2.5 开发“图书管理”模块 /163
8.2.6 开发首页 /171
=
第3篇 项目进阶实战
=
第9章 Flask进阶 /175
9.1 请求上下文和应用上下文 /175
9.1.1 请求上下文(request context) /175
9.1.2 应用上下文(application context) /176
9.2 钩子函数 /178
9.3 认识蓝图 /180
9.4 日志管理 /181
9.5 信号 /182
9.6 测试 /184
9.6.1 单元自动化测试 /185
9.6.2 接口自动化测试 /185
9.6.3 用户界面自动化测试 /185
9.6.4 了解单元测试框架unittest /186
9.6.5 【实战】使用unittest进行单元测试 /186
9.6.6 【实战】使用Flask + unittest
进行接口自动化测试 /188
9.6.7 【实战】使用Pytest进行单元测试 /190
9.6.8 【实战】使用Flask + Pytest进行接口自动化测试 /192
9.7 使用Flask-Cache库实现缓存 /194
9.7.1 安装Flask-Cache库 /194
9.7.2 了解不同的缓存 /194
9.7.3 Flask-Cache库的常见用法 /194
9.7.4 用Redis作为缓存的后端存储 /198
9.8 分布式任务队列Celery /201
9.8.1 Celery的组件及其工作原理 /201
9.8.2 安装Celery /202
9.8.3 【实战】第一个Celery程序 /202
9.9 使用Flask-Mail库实现邮件发送 /203
9.9.1 安装Flask-Mail库 /203
9.9.2 配置变量 /204
9.9.3 获取授权码 /204
9.9.4 邮件发送的示例 /205
9.10 认识工厂函数 /206
9.10.1 为什么要使用工厂函数 /206
9.10.2 创建一个工厂函数 /206
=
第10章 【实战】使用Flask + Bootstrap框架开发商城系统后台 /209
10.1 设计分析 /209
10.1.1 需求分析 /209
10.1.2 架构设计 /210
10.1.3 最终效果 /210
10.2 开发商城系统后台 /210
10.2.1 规划工程目录 /211
10.2.2 开发商品分类模块 /214
10.2.3 开发商品信息模块 /222
10.2.4 使用信号和Flask-Mail发送注册成功邮件 /229
10.2.5 使用Flask-Cache缓存商品数据 /231
10.2.6 开发首页 /233
10.2.7 使用Celery定时将首页生成静态页 /236
=
第4篇 前后端分离项目实战
=
第11章 接口的设计与实现 /242
11.1 前后端分离 /242
11.1.1 了解前后端分离 /242
11.1.2 为什么要前后端分离 /243
11.1.3 如何实施前后端分离 /244
11.1.4 前后端分离的技术栈 /245
11.2 设计符合标准的RESTFul接口 /245
11.3 接口开发——基于Flask-RESTFul框架 /247
11.3.1 安装Flask-RESTFul /247
11.3.2 快速编写一个Flask API /247
11.3.3 认识请求 /249
11.3.4 认识响应 /253
11.3.5 使用蓝图 /262
11.4 接口安全机制 /262
11.4.1 基于HTTPTokenAuth实现Token认证 /262
11.4.2 基于Flask-JWT-Extended实现JWT认证 /265
11.4.3 基于后端技术的跨域解决方案 /269
11.5 【实战】利用Flasgger生成专业的Swagger文档 /271
11.5.1 安装及配置Flasgger /271
11.5.2 生成Swagger文档 /271
11.6 使用Flask-RESTX改进Flask-RESTFul /273
11.7 【实战】实现图书管理系统的接口 /275
11.7.1 规划工程目录 /275
11.7.2 出版社相关接口 /275
11.8 【实战】使用Postman测试接口 /279
11.8.1 发起GET请求 /279
11.8.2 发起POST请求 /280
11.8.3 发起PUT请求 /280
11.8.4 发起DELETE请求 /281
=
第12章 快速入门前端开发—— Vue.js 3 + Vite + Pinia /282
12.1 前端开发利器——Vue.js框架 /282
12.1.1 认识Vue.js /282
12.1.2 Vue.js 3的新特性 /282
12.2 搭建开发环境 /283
12.2.1 安装Node.js /283
12.2.2 使用Vue CLI脚手架创建Vue.js 3项目 /284
12.2.3 使用Vite创建Vue.js 3项目 /287
12.2.4 使用Visual Stdio Code编辑器进行前端代码开发 /290
12.3 Vue.js 3的组合式API /292
12.3.1 选项式API和组合式API的对比 /292
12.3.2 使用<script setup lang="ts">创建组合式API /294
12.3.3 ref()函数和reactive()函数的区别 /295
12.4 Vue.js的基本操作 /296
12.4.1 用插值实现数据绑定 /296
12.4.2 用class和style设置样式 /297
12.4.3 用v-for实现列表渲染 /298
12.4.4 用v-on或者@绑定事件 /299
12.4.5 用v-model实现双向数据绑定 /300
12.4.6 用computed计算属性监听数据 /301
12.5 用Axios实现数据交互 /302
12.5.1 认识Axios /302
12.5.2 用Axios发送网络请求 /302
12.5.3 【案例】实现出版社的增加、删除、修改和查询 /305
12.6 用Pinia实现状态管理 /308
12.6.1 安装和初始化 /309
12.6.2 store——状态仓库,用于存储和管理应用的状态 /309
12.6.3 state——store中的状态数据 /310
12.6.4 getters——store中的计算属性 /311
12.6.5 actions——store中的方法 /312
12.7 用Vue Router库实现路由管理 /313
12.7.1 了解Vue Router库 /313
12.7.2 安装和使用 /313
12.7.3 动态路由 /316
12.7.4 路由嵌套 /317
12.7.5 历史模式和哈希模式 /319
=
第13章 【实战】用Vue.js 3 + Vite + Pinia + Flask-RESTFul开发商城系统 /321
13.1 设计分析 /321
13.1.1 需求分析 /321
13.1.2 架构设计 /322
13.2 用Vue.js 3开发商城系统的前台 /322
13.2.1 核心技术点介绍 /322
13.2.2 公共页面开发 /329
13.2.3 “商品首页”模块开发 /332
13.2.4 “商品列表”模块开发 /337
13.2.5 “商品详情”模块开发 /343
13.2.6 “用户登录”模块开发 /346
13.2.7 “购物车管理”模块开发 /347
13.2.8 “订单管理”模块开发 /350
13.2.9 “个人中心”模块开发 /352
13.3 开发商城系统的后端接口 /357
13.3.1 规划工程目录 /357
13.3.2 会员相关接口 /360
13.3.3 商品相关接口 /367
13.3.4 订单相关接口 /375
13.3.5 基础接口——“地址信息”接口 /383
=
第5篇 部署及运维
=
第14章 Flask应用的传统部署 /389
14.1 部署前的准备工作 /389
14.1.1 准备虚拟机 /389
14.1.2 安装Python 3.9.13 /389
14.1.3 安装Python虚拟环境 /390
14.1.4 安装Flask /391
14.2 使用MySQL数据库 /392
14.2.1 安装MySQL数据库 /392
14.2.2 配置MySQL数据库 /393
14.2.3 客户端连接MySQL数据库 /394
14.2.4 【实战】生成商城系统的数据库和表 /395
14.3 使用uWSGI进行部署 /396
14.3.1 WSGI、uwsgi和uWSGI的关系 /396
14.3.2 安装uwsgi /397
14.3.3 启动并测试uwsgi /397
14.3.4 详解配置文件 /398
14.3.5 常用命令 /399
14.3.6 【实战】部署商城系统后台 /399
14.4 用Gunicorn进行部署 /400
14.4.1 安装Gunicorn /400
14.4.2 启动服务并测试 /401
14.4.3 编写配置文件 /402
14.4.4 【实战】部署商城系统接口 /403
14.5 用Supervisor管理进程 /404
14.5.1 安装和配置 /404
14.5.2 了解配置文件 /404
14.5.3 常用命令 /405
14.5.4 Web监控界面 /405
14.5.5 【实战】管理进程 /406
14.6 用Nginx进行代理 /407
14.6.1 正向代理和反向代理 /407
14.6.2 为什么用了uWSGI还需要用Nginx /408
14.6.3 安装Nginx /408
14.6.4 了解配置文件 /409
14.6.5 【实战】部署商城系统后台 /411
14.6.6 【实战】部署商城系统接口 /412
14.6.7 【实战】部署商城系统前台 /413
14.6.8 【实战】利用Nginx负载均衡部署商城系统接口 /413
=
第15章 Flask应用的Docker部署 /416
15.1 介绍Docker /416
15.1.1 了解Docker /416
15.1.2 虚拟机和容器的区别 /417
15.1.3 了解Docker的镜像、容器和仓库 /418
15.2 安装并启动Docker /419
15.2.1 安装Docker /419
15.2.2 启动Docker /420
15.3 操作Docker镜像 /421
15.3.1 搜索镜像 /421
15.3.2 获取镜像 /421
15.3.3 查看镜像 /422
15.3.4 导入/导出镜像 /423
15.3.5 配置国内镜像仓库 /423
15.4 操作Docker容器 /424
15.4.1 启动容器 /424
15.4.2 进入容器 /426
15.4.3 停止容器 /427
15.4.4 删除容器 /427
15.4.5 复制容器内的文件 /427
15.4.6 查看容器内的日志 /428
15.5 【实战】用Docker部署MySQL /428
15.5.1 拉取镜像 /428
15.5.2 创建容器 /429
15.5.3 进入MySQL容器 /429
15.6 【实战】用Docker方式部署Redis /429
15.6.1 拉取Redis /429
15.6.2 创建并启动Redis容器 /430
15.7 制作自己的镜像——编写Dockerfile文件 /431
15.7.1 语法规则 /431
15.7.2 构建Nginx镜像 /432
15.8 将镜像推送到私有仓库Harbor中 /433
15.8.1 搭建Harbor私有仓库 /433
15.8.2 安装Docker-Compose /433
15.8.3 安装Harbor /434
15.8.4 登录Harbor /435
15.8.5 配置、使用Harbor /436
15.9 【实战】用Docker部署商城系统的接口 /437
15.9.1 拉取并启动MySQL容器 /438
15.9.2 创建接口镜像并启动容器 /438
15.9.3 拉取并启动Nginx容器 /440
15.10 【实战】用Docker Compose部署多个容器 /441
15.10.1 编排容器文件 /442
15.10.2 构建和启动 /443