新書推薦:
《
朋党之争与北宋政治·大学问
》
售價:NT$
454.0
《
甲骨文丛书·波斯的中古时代(1040-1797年)
》
售價:NT$
403.0
《
以爱为名的支配
》
售價:NT$
286.0
《
台风天(大吴作品,每一种生活都有被看见的意义)
》
售價:NT$
245.0
《
打好你手里的牌(斯多葛主义+现代认知疗法,提升当代人的心理韧性!)
》
售價:NT$
301.0
《
新时代硬道理 广东寻路高质量发展
》
售價:NT$
352.0
《
6S精益管理实战(精装版)
》
售價:NT$
458.0
《
异域回声——晚近海外汉学之文史互动研究
》
售價:NT$
500.0
|
編輯推薦: |
互联网大厂Django实战经验,思路清晰,案例实用
系统:全流程讲解Django应用开发,击破编程难点
专业:凝聚7年Python开发经验,分享开发技巧
深入:抽丝剥茧式分析,细致讲解源代码技术原理
全面:列举常用Web开发、运维技术,拿来即用
|
內容簡介: |
本书将Django框架的特性和Web开发实战结合在一起,介绍如何使用Django框架进行Web应用的开发,帮助读者构建跨平台的应用程序,节省使用Django框架开发Web的宝贵时间。找到针对这些问题的解决方案,大多数编程难题都会迎刃而解。 本书内容涵盖表单处理、会话管理、数据库交互、安全防护及程序的部署维护等运维方面的知识,并且介绍了高可用的Web应用原理。在本书中,读者可以更加方便地找到各种编程问题的解决方案。 本书实用性强,特别适合使用PythonPHP等进行Web开发的IT从业者和对Web开发感兴趣的读者阅读。
|
關於作者: |
黄索远,2013年开始进入互联网行业,多年来一直专注于Python后台开发工作,有扎实的理论基础和丰富的实践经验。曾在腾讯、字节跳动公司担任高级软件开发工程师职位。
|
目錄:
|
目 录
第 1 篇
开发工具及框架概述
第1章 从零开始学Django 2
1.1 网站运行原理 2
1.1.1 HTTP 2
1.1.2 Web发展 4
1.1.3 浏览器 4
1.1.4 MVC模式 6
1.2 Python Web编程6
1.2.1 通用网关接口 7
1.2.2 WSGI协议 7
1.2.3 模板引擎 8
1.3 快速上手Django 8
1.3.1 配置开发环境 8
1.3.2 创建项目 10
1.3.3 配置说明 11
1.3.4 创建应用 12
1.3.5 启动开发服务器 13
1.3.6 编写一个页面 13
1.4 总结 14
1.5 练习 14
第 2 篇
项目案例实战
第2章 构建电商网站 16
2.1 网站需求分析 16
2.1.1 需求 16
2.1.2 需求分析 17
2.2 网站结构 18
2.2.1 分层设计 18
2.2.2 技术选型 19
2.3 用户模块 20
2.3.1 Django自带的用户模块 20
2.3.2 一对一扩展用户模型 22
2.3.3 继承AbstractBaseUser 25
2.3.4 继承AbstractUser 27
2.4 商品库模块 27
2.4.1 设计模型 28
2.4.2 获取商品 28
2.5 订单模块 29
2.5.1 购物篮模型 29
2.5.2 订单模型 30
?
VI Django项目开发实战
2.5.3 获取订单数据 31
2.6 统计模块 33
2.7 总结 34
2.8 练习 34
第3 章 Django 和数据库35
3.1 管理 35
3.1.1 配置 35
3.1.2 连接池 37
3.1.3 更改表结构 38
3.2 查询 40
3.2.1 保存对象 40
3.2.2 获取对象 41
3.2.3 懒加载和缓存 42
3.2.4 聚合查询 43
3.3 事务 44
3.3.1 事务管理 44
3.3.2 自动提交 45
3.3.3 提交后执行操作 46
3.4 数据库并发控制 47
3.4.1 冲突 47
3.4.2 悲观锁 48
3.4.3 乐观锁 50
3.4.4 解决冲突 51
3.5 数据库扩展 52
3.5.1 扩展方法 52
3.5.2 读写分离 53
3.5.3 垂直分库 55
3.5.4 水平扩展 57
3.5.5 算法分片 58
3.5.6 动态分片 60
3.5.7 全局ID 62
3.6 MySQL 实践 63
3.7 总结 64
3.8 练习 64
第4 章视图65
4.1 配置URL 65
4.1.1 URL 匹配 65
4.1.2 配置嵌套 66
4.1.3 反向解析URL 67
4.2 视图函数 69
4.2.1 视图函数 69
4.2.2 请求和响应对象 70
4.2.3 模板响应对象 71
4.3 视图类 72
4.3.1 基本用法 72
4.3.2 视图类的优点 73
4.4 文件上传 74
4.4.1 文件表单 74
4.4.2 文件存储 75
4.4.3 使用对象存储系统 76
4.5 生成文件 79
4.5.1 生成CSV 文件 79
4.5.2 生成PDF 文件 80
4.6 中间件 81
4.7 总结 83
4.8 练习 83
第5 章模板84
5.1 Web 模板系统 84
5.2 Django 模板系统 85
?
目 录VII
5.2.1 配置 85
5.2.2 模板语言 86
5.3 模板继承 88
5.4 字符转义 90
5.5 自定义标签和过滤器 92
5.5.1 代码路径 92
5.5.2 编写自定义过滤器 93
5.5.3 自定义标签 93
5.6 总结 95
5.7 练习 95
第6 章表单96
6.1 网页表单 96
6.1.1 表单元素 96
6.1.2 提交数据 98
6.2 Django 表单 98
6.2.1 处理流程 99
6.2.2 Form 类100
6.2.3 ModelForm 类 102
6.2.4 表单集合 103
6.3 AJAX 表单 105
6.3.1 AJAX 技术105
6.3.2 动态表单 106
6.4 验证码 107
6.4.1 表单验证码 108
6.4.2 AJAX 验证码109
6.5 总结 110
6.6 练习 110
第7 章 Django 和缓存111
7.1 Web 缓存系统 111
7.1.1 Redis 缓存 111
7.1.2 HTTP 缓存 114
7.2 Django 缓存系统 115
7.2.1 配置缓存 116
7.2.2 使用缓存 117
7.2.3 缓存页面 118
7.2.4 使用HTTP 缓存 120
7.3 缓存替换策略 122
7.4 写入策略 126
7.4.1 Cache-Aside 模式126
7.4.2 Write-Through 模式 128
7.4.3 Write-Back 模式129
7.5 高可用缓存系统 131
7.5.1 Redis 集群 131
7.5.2 Codis 集群133
7.5.3 缓存穿透和雪崩 134
7.6 总结 135
7.7 练习 135
第8 章 Django 和消息队列136
8.1 消息队列 136
8.1.1 消息队列系统 136
8.1.2 使用消息队列 138
8.1.3 AMQP 139
8.1.4 使用RabbitMQ 141
8.2 Django 和Celery 框架 143
8.2.1 任务类 143
8.2.2 在Django 中使用Celery 145
8.2.3 定时任务 148
8.2.4 任务路由 150
8.2.5 任务工作流 151
?
VIII Django项目开发实战
8.2.6 最佳实践 153
8.3 高可用消息队列 154
8.3.1 RabbitMQ 高可用 154
8.3.2 NSQ 系统 155
8.4 总结 156
8.5 练习 156
第9 章 Django 与安全157
9.1 安全中间件 157
9.1.1 跨站点脚本防护 157
9.1.2 跨站点伪造请求防护 158
9.1.3 SQL 注入防护 161
9.1.4 点击劫持 162
9.1.5 访问白名单 163
9.2 数据安全 164
9.2.1 密码保护 164
9.2.2 安全连接 166
9.2.3 请求签名 169
9.2.4 重放攻击 171
9.3 总结 173
9.4 练习 173
第10 章 Django 和访问控制174
10.1 认证方式 174
10.1.1 HTTP 基本访问认证 174
10.1.2 访问令牌 176
10.1.3 签名验证 179
10.1.4 OAuth2 验证 181
10.2 会话状态 184
10.3 控制策略 186
10.3.1 访问控制列表 186
10.3.2 Django 权限系统 188
10.3.3 基于身份的访问控制 189
10.4 总结 191
10.5 练习 192
第11 章 Django 和测试193
11.1 单元测试 193
11.2 Django 单元测试 194
11.2.1 编写测试用例 195
11.2.2 运行测试用例 196
11.3 Django 测试工具 198
11.3.1 测试客户端 198
11.3.2 测试类 200
11.4 Mock 测试 201
11.4.1 Mock 对象 202
11.4.2 模拟返回值 203
11.4.3 副作用 205
11.4.4 限定模拟的范围 207
11.5 总结 208
11.6 练习 209
第 3 篇
高可用技术架构
第12 章 Django 与部署212
12.1 软件部署 212
12.2 部署Django 213
12.2.1 Web 服务网关接口 214
12.2.2 配置uWSGI 服务器 215
12.2.3 配置Gunicorn 服务器 218
?
目 录IX
12.2.4 配置Nginx 服务器 223
12.3 服务管理 224
12.3.1 使用Supervisord 管理服务225
12.3.2 使用systemd 管理服务 226
12.4 Django 与虚拟化技术 228
12.4.1 使用Vagrant 部署Django 应用228
12.4.2 使用Docker 部署Django 应用231
12.4.3 Docker 的reap 问题234
12.5 总结 236
12.6 练习 236
第13 章 Django 与负载均衡237
13.1 调度算法 237
13.1.1 循环调度算法 237
13.1.2 最少连接调度算法 239
13.1.3 哈希调度算法 240
13.2 网络冗余 241
13.2.1 网卡绑定 241
13.2.2 虚拟路由器冗余 242
13.3 常用负载均衡器 245
13.3.1 负载均衡器的类型 245
13.3.2 Linux 虚拟服务器246
13.3.3 Nginx 反向代理 250
13.4 服务发现 252
13.4.1 服务注册中心 252
13.4.2 注册服务 254
13.4.3 发现服务 256
13.5 总结 259
13.6 练习 260
第14 章 Django 与日志261
14.1 Python 日志模块 261
14.1.1 日志模块组件 261
14.1.2 使用日志模块 263
14.1.3 配置日志模块 266
14.2 Django 日志工具 267
14.3 日志管理 268
14.3.1 Elastic 技术栈 269
14.3.2 Elasticsearch 集群 273
14.4 总结 275
14.5 练习 276
第15 章监控277
15.1 监控数据采集 277
15.1.1 工作指标 277
15.1.2 资源指标 278
15.1.3 事件 279
15.1.4 收集数据 280
15.2 告警 281
15.3 使用Prometheus 282
15.3.1 Prometheus 的工作方式282
15.3.2 抓取Linux 系统数据284
15.3.3 抓取Nginx 监控数据 286
15.3.4 抓取MySQL 监控数据 288
15.3.5 数据存储 289
15.3.6 告警 290
15.4 总结 291
15.5 练习 291
?
第16章 常用工具 292
16.1 Git版本控制系统 292
16.1.1 Git工作方式 292
16.1.2 Gitflow工作流 294
16.1.3 Git日志用法 296
16.2 Linux常用软件 297
16.2.1 安全Shell 297
16.2.2 进程状态 299
16.2.3 系统性能 301
16.3 性能剖析 303
16.3.1 调用路径图 304
16.3.2 性能测试 306
16.3.3 使用Pyflame生成火焰图 308
16.4 总结 310
16.5 练习 310
|
內容試閱:
|
前 言
为什么要写这本书?
随着技术的发展,计算机及其他硬件越来越大众化。在许多IT企业或组织中,人力资
源正成为最宝贵的资源。同时,社会信息化程度的提高,加剧了互联网行业的竞争,众多
企业都使用MVP(最小可行产品)模型来开发软件产品。在这样的背景下,程序的开发时
间比程序的执行时间更为重要,减少每个项目开发所需的时间和人力可以为企业节省大量
的资金。
Django作为高级的Python Web框架,继承了Python语言表达力强、开发效率高的优点,
正成为越来越多团队的技术选择。Django除了自带Web开发工具外,还有众多开箱即用的
第三方Django扩展,使工程师能够高效率地解决更多的技术问题。程序员要想学习Django
开发,除了需要有扎实的Python语言基础外,还要学习Web应用相关的知识,如HTTP、缓存、
数据库等。
另外,DevOps的流行,正在打破开发和运维之间的边界。在很多IT企业或组织中,
开发人员也需要参与项目的部署和运维。这对开发人员提出了新的要求:不仅需要了解和
编写业务,而且需要了解高可用的技术架构。当下,云计算已经成为最重要的IT基础设施,
这种开发加运维的能力正变得越来越重要。
目前图书市场上关于Django框架应用的图书不少,但真正从实际应用出发,以用户价
值为核心,从提出问题到需求提炼的价值探索,再到构建应用、运行应用、检测应用的快
速验证这一研发闭环为主旨的图书却很少。本书便是以实战为主旨,以Django为切入点,
以全面的视角介绍了Web应用的技术架构和常见的应用案例,让读者全面、深入、透彻地
理解Web开发的各种热门技术,提高实际开发水平和实战能力。
本书有何特色?
1. 涵盖Django 主要功能和主流Python 框架的整合使用
本书涵盖Django 模型、视图、中间件、表单、模板、安全等主要功能,以及Django
与Celery、pyredis、django-allauth 等主流框架的整合使用。
2. 对Python Web 开发的各种技术和框架作了原理上的分析
本书从一开始便对Web 开发基础和Python Web 开发的环境配置做了基本介绍,并对各
种开发技术和主流框架及其整合进行了原理性分析,便于读者理解书中后面介绍的典型模
块开发和项目案例。
3. 涵盖Python Web 应用常见关联技术栈
本书介绍了数据库MySQL、Web 服务器Nginx、缓存服务Redis、消息队列服务
RabbitMQ 的作用和如何在Django 中使用这些技术。另外,本书还介绍了WSGI、uwsgi、
Gunicorn、ZooKeeper、Vagrant 、Docker 和Linux 这些常用于部署和运维Django 应用的工
具和服务。
4. 涵盖高可用的Web 技术架构的原理
本书介绍了MySQL主从同步高可用原理、Redis 的Redis Cluster 和Codis 高可用原理、
NSQ 高可用原理、RabbitMQ 高可用原理,涵盖了LVS 、Nginx 作为负载均衡器的工作原理,
也介绍了采集日志和监控的常用技术栈。
本书内容及知识体系
第1 篇开发工具及框架概述(第1 章)
本篇介绍了Django 开发环境的配置和HTTP 服务开发的基础知识,主要包括Web 开
发基础、配置Python 开发环境、MVC 开发模式等。
第2 篇项目案例实战(第2
~
11 章)
本篇介绍了使用Django 来开发一个小型电商网站的案例。开发过程包括需求分析、技
术选型及使用Django 自带的ORM、视图、模板、表单、缓存、异步任务、安全、访问控制、
测试和第三方的开源工具来完成项目需求。
第3 篇高可用技术架构(第12
~
16 章)
本篇介绍了如何部署、运维和监控以Django 为代表的Web 应用,主要包括Web 服务器、
应用服务器、虚拟化技术、负载均衡技术、服务发现技术、ELK 技术栈和监控系统。
适合阅读本书的读者
●
需要全面学习Python Web 开发技术的人员;
●
广大Web 开发程序员;
●
Python 程序员;
●
希望提高项目开发水平的人员;
●
专业培训机构的学员;
●
软件开发项目经理;
●
运维人员和DevOps 工程师。
阅读本书的建议
●
没有Python 基础的读者,建议从第1 章依次阅读并演练每一个实例。
●
有一定Django 框架基础的读者,可以根据实际情况有重点地选择阅读各个模块和
项目案例。
●
对于每一个模块和项目案例,先自己思考一下实现的思路,然后带着问号去阅读,
学习效果会更好。
|
|