pythonweb框架django_Django企业开发实战 高效Python Web框架指南

第一部分初入江湖

章需求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.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.1Python 2.7与Python 3.x13

2.1.1历史演进13

2.1.2现实场景14

2.1.3为未来做准备15

2.1.4参考资料15

2.2WSGI——Web框架基础15

2.2.1简介15

2.2.2简单的Web Server16

2.2.3多线程版的Web Server17

2.2.4简单的WSGI Application20

2.2.5理解WSGI22

2.2.6WSGI中间件和Werkzeug23

2.2.7参考资料24

2.2.8扩展阅读24

2.3Flask框架24

2.3.1入门推荐25

2.3.2Flask内置功能25

2.3.3匹配需求26

2.3.4总结26

2.4Tornado框架26

2.4.1印象26

2.4.2内置功能27

2.4.3总结27

2.5Django框架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创建App38

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 view48

3.4.2配置middleware49

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

3.4.4总结57

3.5本章总结57

第二部分正式开发

第4章进入开发60

4.1编码规范60

4.1.1import this(Python之禅)61

4.1.2Python编码规范62

4.1.3Django编码风格66

4.1.4总结69

4.1.5参考资料69

4.2虚拟环境69

4.2.1Python 3.3之后自带venv模块69

4.2.2virtualenv的用法70

4.2.3总结71

4.2.4参考资料71

4.3合理的项目结构71

4.3.1原则71

4.3.2通用项目结构71

4.3.3Django项目结构72

4.3.4总结74

4.3.5参考资料74

4.4版本管理与协作:Git74

4.4.1我们的协作方式74

4.4.2Git的基本概念75

4.4.3案例演示76

4.4.4Git进阶76

4.4.5总结80

4.4.6参考资料80

4.5本章总结80

第5章奠定项目基石:Model81

5.1创建项目及配置81

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

5.1.2配置settings84

5.1.3配置Git85

5.1.4总结86

5.1.5参考资料86

5.2编写Model层的代码86

5.2.1创建App87

5.2.2配置INSTALLED_APPS92

5.2.3创建数据库[表]93

5.2.4提交代码95

5.2.5总结96

5.2.6参考资料96

5.3Model层:字段介绍96

5.3.1ORM的基本概念97

5.3.2常用字段类型98

5.3.3参数99

5.3.4总结100

5.3.5参考资料101

5.4Model层:QuerySet的使用101

5.4.1QuerySet的概念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.2comment的admin配置115

6.1.3config的admin配置115

6.1.4详细配置116

6.1.5总结117

6.2根据需求定制admin117

6.2.1定义list页面117

6.2.2编辑页面的配置120

6.2.3自定义静态资源引入122

6.2.4自定义Form123

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

6.2.6定制site124

6.2.7admin的权限逻辑以及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使用LogEntry131

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封装好SideBar151

7.3.3总结153

7.4整理模板代码153

7.4.1抽象基础模板153

7.4.2解耦硬编码155

7.4.3总结157

7.5升级至class-based view157

7.5.1函数与类157

7.5.2理解class-based view157

7.5.3改造代码162

7.5.4总结166

7.5.5参考资料166

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

7.6.1class-based view的处理流程166

7.6.2总结167

7.7本章总结167

第8章引入前端样式框架Bootstrap168

8.1Bootstrap的基本用法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和外联CSS180

8.3.2Django中的静态资源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抽象出评论模块组件和Mixin195

9.3.5修改最新评论模板197

9.3.6总结197

9.3.7参考资料197

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

9.4.1Markdown第三方库197

9.4.2评论内容支持198

9.4.3文章正文使用Markdown198

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和sitemap206

9.6.1实现RSS输出206

9.6.2实现sitemap208

9.6.3配置RSS和sitemap的urls.py209

9.6.4总结210

9.6.5参考资料210

9.7本章总结210

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

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

10.1xadmin介绍和使用215

10.1.1特性215

10.1.2安装最新的xadmin代码216

10.1.3admin替换为xadmin216

10.1.4fieldset修改为FieldSet218

10.1.5静态资源Media配置219

10.1.6自定义过滤器219

10.1.7数据处理上的差异221

10.1.8处理inline221

10.1.9site 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.2django-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.5Markdown和django-ckeditor共存231

10.3.6总结234

10.3.7参考资料234

10.4本章总结235

1章使用django-rest-framework236

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

11.1.1快速上手237

11.1.2配置API docs240

11.1.3总结242

11.1.4参考资料242

11.2生成我们的RESTful接口242

11.2.1区分list和detail242

11.2.2实现分页243

11.2.3实现Category接口244

11.2.4HyperlinkedModelSerializer的使用246

11.2.5其他数据接口的实现248

11.2.6总结248

11.2.7参考资料248

11.3本章总结249

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

2章调试和优化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配置第三方panel267

12.2.4line_profiler269

12.2.5总结271

12.2.6参考资料271

12.3使用silk271

12.3.1快速配置silk271

12.3.2配置profiling273

12.3.3总结273

12.3.4参考资料273

12.4本章总结274

3章配置MySQL和缓存275

13.1配置MySQL275

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

13.1.2配置正式的settings277

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.6Django中的缓存配置284

13.2.7配置Redis缓存286

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

13.2.9总结287

13.2.10参考资料288

13.3本章总结288

4章上线前的准备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.py293

14.2.2sdist与bdist_wheel295

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为什么需要使用Gunicorn304

14.3.2Gunicorn简介305

14.3.3使用Gunicorn306

14.3.4Supervisor介绍307

14.3.5自动化部署和supervisord310

14.3.6setup.py和requirements.txt311

14.3.7配置正式settings312

14.3.8静态文件处理315

14.3.9总结315

14.3.10参考资料315

14.4配置Nginx315

14.4.1Nginx介绍315

14.4.2为什么使用Nginx316

14.4.3配置Nginx318

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

5章升级到Django 2.0329

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

15.2轻松升级到Django 2.0330

15.2.1几个重要的变化330

15.2.2第三方库的升级331

15.2.3总结331

15.3本章总结332

6章最后总结333

16.1技术栈总结333

16.1.1技术栈列表333

16.1.2总结334

16.2后续可实践方向334

16.2.1精于一点335

16.2.2持续滚动雪球335

16.3Django Web开发技术栈清单336

16.3.1Python基础336

16.3.2Django基础336

16.3.3Django进阶338

16.3.4部署相关338

16.3.5MySQL数据库339

16.3.6Redis339

16.3.7常用算法339

16.3.8总结339

16.4最后340

附录A使用Fabric 2.0341

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

附录CSentry安装和配置350

附录D评论验证码功能354

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

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

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

你可能感兴趣的:(pythonweb框架django_Django企业开发实战 高效Python Web框架指南)