Django企业开发实战 : 高效Python Web框架指南

0
(0)

Django企业开发实战
: 高效Python Web框架指南

作者:胡阳

出版社:人民邮电出版社

出品方:图灵教育

副标题:高效PythonWeb框架指南

出版年:2019-2

页数:392

定价:99.00元

装帧:平装

丛书:图灵原创

ISBN:9787115506894

内容简介
······

本书以博客系统贯穿始末,介绍了Django的方方面面。书中共分四部分,第一部分介绍了正式进入编码之前的准备工作,内容包括需求分析、基础知识和Demo系统的开发;第二部分开始实现需求,内容涉及环境配置、编码规范以及项目结构规划,编写了Model层、admin页面、Form代码和View逻辑,引入了Bootstrap框架;第三部分重点介绍xadmin、django-autocomple-light和django-rest-framework等第三方插件;最后一部分介绍调试、优化、自动化部署以及压力测试等内容。

作者简介
······

胡阳

网名the5fire,前搜狐资深开发工程师,现任知乎资深开发工程师,负责部分业务的后端开发和团队管理。

具有10年编程经验和写博客经验,喜欢通过代码来构建一些有价值的东西,也爱好记录和分享自己的经验。

2011年从Java转到Python后,便不可自拔,主要熟悉的Web框架是Django和Tornado。赞叹于Python的开发效率,欣赏Django完备的功能点对实际项目开发中程序员生产力的提升。

目录
······

第一部分 初入江湖

第1章 需求  2

1.1 需求文档  3

1.2 需求评审/分析  4

1.2.1 博客需求评审  5

1.2.2 评审之后  6

1.3 功能分析  6

1.3.1 需求列表  6

1.3.2 功能点梳理  7

1.3.3 模块划分  8

1.4 模块划分  9

1.4.1 实体及关系  9

1.4.2 模块划分  10

1.5 本章总结  12

第2章 框架基础和技术选型  13

2.1 Python 2.7与Python 3.x  13

2.1.1 历史演进  13

2.1.2 现实场景  14

2.1.3 为未来做准备  15

2.1.4 参考资料  15

2.2 WSGI——Web框架基础  15

2.2.1 简介  15

2.2.2 简单的Web Server  16

2.2.3 多线程版的Web Server  17

2.2.4 简单的WSGI Application  20

2.2.5 理解WSGI  22

2.2.6 WSGI中间件和Werkzeug  23

2.2.7 参考资料  24

2.2.8 扩展阅读  24

2.3 Flask框架  24

2.3.1 入门推荐  25

2.3.2 Flask内置功能  25

2.3.3 匹配需求  26

2.3.4 总结  26

2.4 Tornado框架  26

2.4.1 印象  26

2.4.2 内置功能  27

2.4.3 总结  27

2.5 Django框架  28

2.5.1 新手友好程度  28

2.5.2 内置功能  29

2.5.3 总结  29

2.5.4 参考资料  29

2.6 本章总结  30

第3章 Django小试牛刀  31

3.1 如何阅读Django文档  31

3.1.1 文档结构  31

3.1.2 总结  36

3.2 学员管理系统的后台开发  37

3.2.1 需求  37

3.2.2 初始化环境  37

3.2.3 创建项目  38

3.2.4 创建App  38

3.2.5 编写代码  39

3.2.6 基础配置(中文)  41

3.2.7 总结  41

3.3 学员管理系统的前台开发  41

3.3.1 开发首页  41

3.3.2 输出数据  42

3.3.3 提交数据  44

3.3.4 优化数据,获取逻辑  47

3.3.5 总结  47

3.4 学员管理系统的进阶部分  48

3.4.1 使用class-based view  48

3.4.2 配置middleware  49

3.4.3 编写TestCase提升代码稳定性  53

3.4.4 总结  57

3.5 本章总结  57

第二部分 正式开发

第4章 进入开发  60

4.1 编码规范  60

4.1.1 import this(Python之禅)  61

4.1.2 Python编码规范  62

4.1.3 Django编码风格  66

4.1.4 总结  69

4.1.5 参考资料  69

4.2 虚拟环境  69

4.2.1 Python 3.3之后自带venv模块  69

4.2.2 virtualenv的用法  70

4.2.3 总结  71

4.2.4 参考资料  71

4.3 合理的项目结构  71

4.3.1 原则  71

4.3.2 通用项目结构  71

4.3.3 Django项目结构  72

4.3.4 总结  74

4.3.5 参考资料  74

4.4 版本管理与协作:Git  74

4.4.1 我们的协作方式  74

4.4.2 Git的基本概念  75

4.4.3 案例演示  76

4.4.4 Git进阶  76

4.4.5 总结  80

4.4.6 参考资料  80

4.5 本章总结  80

第5章 奠定项目基石:Model  81

5.1 创建项目及配置  81

5.1.1 拆分settings以适应不同的运行环境  83

5.1.2 配置settings  84

5.1.3 配置Git  85

5.1.4 总结  86

5.1.5 参考资料  86

5.2 编写Model层的代码  86

5.2.1 创建App  87

5.2.2 配置INSTALLED_APPS  92

5.2.3 创建数据库[表]  93

5.2.4 提交代码  95

5.2.5 总结  96

5.2.6 参考资料  96

5.3 Model层:字段介绍  96

5.3.1 ORM的基本概念  97

5.3.2 常用字段类型  98

5.3.3 参数  99

5.3.4 总结  100

5.3.5 参考资料  101

5.4 Model层:QuerySet的使用  101

5.4.1 QuerySet的概念  101

5.4.2 常用的QuerySet接口  102

5.4.3 进阶接口  104

5.4.4 常用的字段查询  105

5.4.5 进阶查询  106

5.4.6 总结  107

5.4.7 参考资料  107

5.5 本章总结  107

第6章 开发管理后台  108

6.1 配置admin页面  108

6.1.1 创建blog的管理后台  109

6.1.2 comment的admin配置  115

6.1.3 config的admin配置  115

6.1.4 详细配置  116

6.1.5 总结  117

6.2 根据需求定制admin  117

6.2.1 定义list页面  117

6.2.2 编辑页面的配置  120

6.2.3 自定义静态资源引入  122

6.2.4 自定义Form  123

6.2.5 在同一页面编辑关联数据  123

6.2.6 定制site  124

6.2.7 admin的权限逻辑以及SSO登录  125

6.2.8 总结  127

6.2.9 参考资料  127

6.3 抽取Admin基类  127

6.3.1 抽象author基类  127

6.3.2 总结  131

6.4 记录操作日志  131

6.4.1 使用LogEntry  131

6.4.2 查询某个对象的变更  133

6.4.3 在admin页面上查看操作日志  133

6.5 本章总结  134

第7章 开发面向用户的界面  135

7.1 搭建基础结构与展示文章数据  135

7.1.1 分析URL和页面数据  135

7.1.2 编写URL代码  137

7.1.3 编写View代码  138

7.1.4 配置模板  139

7.1.5 模板找不到的错误处理  140

7.1.6 编写正式的View代码  141

7.1.7 配置模板数据  142

7.1.8 总结  144

7.1.9 参考资料  144

7.2 配置页面通用数据  144

7.2.1 完善模板信息  144

7.2.2 重构post_list视图  146

7.2.3 分类信息  147

7.2.4 侧边栏配置  150

7.2.5 总结  150

7.3 封装侧边栏逻辑  150

7.3.1 调整模型  151

7.3.2 封装好SideBar  151

7.3.3 总结  153

7.4 整理模板代码  153

7.4.1 抽象基础模板  153

7.4.2 解耦硬编码  155

7.4.3 总结  157

7.5 升级至class-based view  157

7.5.1 函数与类  157

7.5.2 理解class-based view  157

7.5.3 改造代码  162

7.5.4 总结  166

7.5.5 参考资料  166

7.6 Django的View是如何处理请求的  166

7.6.1 class-based view的处理流程  166

7.6.2 总结  167

7.7 本章总结  167

第8章 引入前端样式框架Bootstrap  168

8.1 Bootstrap的基本用法  169

8.1.1 介绍  169

8.1.2 容器和栅格系统  169

8.1.3 简单的页面布局  171

8.1.4 总结  174

8.1.5 参考资料  174

8.2 基于Bootstrap美化页面  174

8.2.1 增加themes目录  175

8.2.2 修改模板  176

8.2.3 总结  180

8.3 配置线上静态资源  180

8.3.1 内联CSS和外联CSS  180

8.3.2 Django中的静态资源  181

8.3.3 在模板中使用静态资源  182

8.3.4 总结  183

8.3.5 参考资料  183

8.4 本章总结  183

第9章 完成整个博客系统  184

9.1 增加搜索和作者过滤  184

9.1.1 增加搜索功能  185

9.1.2 增加作者页面  186

9.1.3 总结  186

9.2 增加友链页面  186

9.3 增加评论模块  188

9.3.1 评论提交的方式  188

9.3.2 评论模块通用化改造  188

9.3.3 实现评论  190

9.3.4 抽象出评论模块组件和Mixin  195

9.3.5 修改最新评论模板  197

9.3.6 总结  197

9.3.7 参考资料  197

9.4 配置Markdown编写文章的支持  197

9.4.1 Markdown第三方库  197

9.4.2 评论内容支持  198

9.4.3 文章正文使用Markdown  198

9.4.4 配置代码高亮  199

9.4.5 总结  201

9.4.6 参考资料  201

9.5 增加访问统计  201

9.5.1 文章访问统计分析  202

9.5.2 实现文章访问统计  203

9.5.3 更加合理的方案  206

9.5.4 总结  206

9.5.5 参考资料  206

9.6 配置RSS和sitemap  206

9.6.1 实现RSS输出  206

9.6.2 实现sitemap  208

9.6.3 配置RSS和sitemap的

urls.py  209

9.6.4 总结  210

9.6.5 参考资料  210

9.7 本章总结  210

第三部分 第三方插件的使用

第10章 使用第三方插件增强管理后台  214

10.1 xadmin介绍和使用  215

10.1.1 特性  215

10.1.2 安装最新的xadmin代码  216

10.1.3 admin替换为xadmin  216

10.1.4 fieldset修改为FieldSet  218

10.1.5 静态资源Media配置  219

10.1.6 自定义过滤器  219

10.1.7 数据处理上的差异  221

10.1.8 处理inline  221

10.1.9 site title和site footer的处理  222

10.1.10 去掉Django admin自带的log配置  222

10.1.11 总结  222

10.2 使用django-autocomplete-light优化性能  222

10.2.1 创造1万个分类  223

10.2.2 django-autocomplete-light介绍  224

10.2.3 引入插件  224

10.2.4 总结  226

10.2.5 参考资料  226

10.3 使用django-ckeditor开发富文本编辑器  226

10.3.1 基础配置  227

10.3.2 配置图片  228

10.3.3 上传图片配置  228

10.3.4 自定义存储以及水印  229

10.3.5 Markdown和django-ckeditor共存  231

10.3.6 总结  234

10.3.7 参考资料  234

10.4 本章总结  235

第11章 使用django-rest-framework  236

11.1 接口需求及django-rest-framework介绍  237

11.1.1 快速上手  237

11.1.2 配置API docs  240

11.1.3 总结  242

11.1.4 参考资料  242

11.2 生成我们的RESTful接口  242

11.2.1 区分list和detail  242

11.2.2 实现分页  243

11.2.3 实现Category接口  244

11.2.4 HyperlinkedModelSeria-lizer的使用  246

11.2.5 其他数据接口的实现  248

11.2.6 总结  248

11.2.7 参考资料  248

11.3 本章总结  249

第四部分 上线前的准备及线上问题排查

第12章 调试和优化  252

12.1 常用的调试和调优手段  252

12.1.1 调试手段  252

12.1.2 调优手段  259

12.1.3 总结  262

12.1.4 参考资料  262

12.2 使用django-debug-toolbar优化系统  262

12.2.1 快速配置  262

12.2.2 解读数据  263

12.2.3 配置第三方panel  267

12.2.4 line_profiler  269

12.2.5 总结  271

12.2.6 参考资料  271

12.3 使用silk  271

12.3.1 快速配置silk  271

12.3.2 配置profiling  273

12.3.3 总结  273

12.3.4 参考资料  273

12.4 本章总结  274

第13章 配置MySQL和缓存  275

13.1 配置MySQL  275

13.1.1 使用CONN_MAX_AGE优化数据库连接  276

13.1.2 配置正式的settings  277

13.1.3 总结  277

13.1.4 参考资料  277

13.2 缓存的演化  278

13.2.1 什么是缓存  278

13.2.2 缓存装饰器  279

13.2.3 增强缓存装饰器  280

13.2.4 不引入Redis吗  283

13.2.5 继续演变我们的缓存逻辑  284

13.2.6 Django中的缓存配置  284

13.2.7 配置Redis缓存  286

13.2.8 应用场景和缓存的粒度  287

13.2.9 总结  287

13.2.10 参考资料  288

13.3 本章总结  288

第14章 上线前的准备  289

14.1 你的代码如何为用户提供服务  290

14.1.1 整体结构  290

14.1.2 项目部署方案  291

14.1.3 系统架构  292

14.1.4 总结  292

14.2 标准化打包和自动化部署  292

14.2.1 配置项目的setup.py  293

14.2.2 sdist与bdist_wheel  295

14.2.3 配置内部PyPI服务器  296

14.2.4 自动化部署  298

14.2.5 编写fabfile配置  299

14.2.6 总结  303

14.2.7 参考资料  304

14.3 在生产环境中运行项目  304

14.3.1 为什么需要使用Gunicorn  304

14.3.2 Gunicorn简介  305

14.3.3 使用Gunicorn  306

14.3.4 Supervisor介绍  307

14.3.5 自动化部署和supervisord  310

14.3.6 setup.py和requirements.txt  311

14.3.7 配置正式settings  312

14.3.8 静态文件处理  315

14.3.9 总结  315

14.3.10 参考资料  315

14.4 配置Nginx  315

14.4.1 Nginx介绍  315

14.4.2 为什么使用Nginx  316

14.4.3 配置Nginx  318

14.4.4 总结  320

14.4.5 参考资料  320

14.5 常用的监控方式  320

14.5.1 实时监控  320

14.5.2 统计分析  321

14.5.3 业务监控(埋点统计)  322

14.5.4 总结  322

14.6 试试你的系统能抗多少请求  322

14.6.1 计算系统承载量  322

14.6.2 反推一下  324

14.6.3 压力测试  324

14.6.4 压测工具介绍  324

14.6.5 完全模拟真实流量  326

14.6.6 缓存加速访问  327

14.6.7 总结  328

14.6.8 参考资料  328

14.7 本章总结  328

第15章 升级到Django 2.0  329

15.1 Django 2.x——Python 2时代的逝去  329

15.2 轻松升级到Django 2.0  330

15.2.1 几个重要的变化  330

15.2.2 第三方库的升级  331

15.2.3 总结  331

15.3 本章总结  332

第16章 最后总结  333

16.1 技术栈总结  333

16.1.1 技术栈列表  333

16.1.2 总结  334

16.2 后续可实践方向  334

16.2.1 精于一点  335

16.2.2 持续滚动雪球  335

16.3 Django Web开发技术栈清单  336

16.3.1 Python基础  336

16.3.2 Django基础  336

16.3.3 Django进阶  338

16.3.4 部署相关  338

16.3.5 MySQL数据库  339

16.3.6 Redis  339

16.3.7 常用算法  339

16.3.8 总结  339

16.4 最后  340

附录A 使用Fabric 2.0  341

附录B 使用uWSGI来启动Django程序  347

附录C Sentry安装和配置  350

附录D 评论验证码功能  354

附录E 通过signal来解耦代码  358

附录F 实现文章置顶的几种方案  363

附录G 以腾讯云为例演示部署流程  365

"Django企业开发实战"试读
······

突然收到作者的邮件邀请,让我给新书写推荐序。由于之前对 the5fire 这个 ID 并没什么印象,所以按照老规矩加微信,一叙旧才知居然是 6 年前 BPUG 结下的善缘(详见 https://www.the5fire.com/957.html)。
BPUG(北京 Python 用户组)是 2004 年成立的 CPUG(中国 Python 用户组)的北京分会,从 2004 年到 2007 年共组织有 25 次线下活动,我发起并主持了其中绝大多数线下交流活动…

  • 序一
  • 序 二
  • 前言
  • 第2章 框架基础和技术选型

评论 ······

6天总共花了8小时读完,起因是帮理发店的朋友做一个来店管理系统,想到要快速实现且没有性能要求就又捡起了Django(上次还是大三时做图书管理系统吧TAT,当时看的还是vamei的教程,如今斯人已逝)。系统顺利做完了,书多看了几天才看完,虽然没有太深入的原理剖析,但实用的建议还是蛮多的。就像作者说的,Django之所以值的学习是因为学习这个框架就会领略web开发的方方面面,而且知识很容易迁移到其他语…

一本好书让你觉得作者很笨,但是自己学到东西了,比如《 Python编程从入门到实践第2版》

而一本烂书,让你觉得作者很牛x,但是什么也没学到,比如这一本

啰啰嗦嗦,废话太多,过于口语化,我认为从第三部分开始才有干货

剖丁解牛式的基于博客业务和Django框架的系统开发,通过不断的迭代,对Django框架的认识也在不断加深。内容不仅Django本身,还有第三方插件,甚至还有Web部署和监测,真是非常用心的在带领读者体会Django味了,算得上是国内最好的讲解框架的书籍。

唯二的缺点:一是版本,django4都发布了,xadmin好多报错;二是nginx、fabric等工具软件的介绍不深不浅。

点击星号评分!

平均分 0 / 5. 投票数: 0

还没有投票!请为他投一票。

评论 抢沙发

评论前必须登录!

 

登录

找回密码

注册