网站首页 > 电子书书籍 正文
通过从零开发到部署完整案例,介绍Python Web框架Django在企业中的应用
开发工程师the5fire多年开发经验总结
以博客系统为原型,教你以真实的视角搭建自己的生产环境
以博客系统为原型,教你以真实的视角搭建自己的生产环境
容简介
本书以从零开发一个博客系统为例,介绍Django在日常工作中的应用。
本书共分为四部分。部分介绍编码之前的准备工作,包括需求分析、Web开发基础以及选型时Demo的练习。第二部分开始正式实现需求,介绍了环境配置、编码规范以及合理的项目结构划分。通过对Django各部分(Model、Form、admin、View)的介绍和使用,完成了一个基础的博客系统。第三部分在前面的基础上介绍Django第三方插件的使用,通过引入这些插件进一步增强我们的系统。一部分也是正式工作中必不可少的部分,包含调试代码、优化系统、压力测试以及自动化等内容。
本书适合Python Web开发人员阅读。
本书共分为四部分。部分介绍编码之前的准备工作,包括需求分析、Web开发基础以及选型时Demo的练习。第二部分开始正式实现需求,介绍了环境配置、编码规范以及合理的项目结构划分。通过对Django各部分(Model、Form、admin、View)的介绍和使用,完成了一个基础的博客系统。第三部分在前面的基础上介绍Django第三方插件的使用,通过引入这些插件进一步增强我们的系统。一部分也是正式工作中必不可少的部分,包含调试代码、优化系统、压力测试以及自动化等内容。
本书适合Python Web开发人员阅读。
作者简介
胡阳,网名the5fire,前搜狐开发工程师,现任知乎开发工程师,负责部分业务的后端开发和团队管理。
具有10年编程经验和写博客经验,喜欢通过代码来构建一些有价值的东西,也爱好记录和分享自己的经验。
2011年从Java转到Python后,便不可自拔,主要熟悉的Web框架是Django和Tornado。赞叹于Python的开发效率,欣赏Django完备的功能点对实际项目开发中程序员生产力的提升。
具有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.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
第三部分第三方插件的使用
第10章使用第三方插件增强管理后台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
第11章使用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
第四部分上线前的准备及线上问题排查
第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配置第三方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
第13章配置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
第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.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
第15章升级到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
第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.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.4340
附录A使用Fabric 2.0341
附录B使用uWSGI来启动Django程序347
附录CSentry安装和配置350
附录D评论验证码功能354
附录E通过signal来解耦代码358
附录F实现文章置顶的几种方案363
附录G以腾讯云为例演示部署流程365
第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.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
第三部分第三方插件的使用
第10章使用第三方插件增强管理后台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
第11章使用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
第四部分上线前的准备及线上问题排查
第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配置第三方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
第13章配置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
第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.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
第15章升级到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
第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.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.4340
附录A使用Fabric 2.0341
附录B使用uWSGI来启动Django程序347
附录CSentry安装和配置350
附录D评论验证码功能354
附录E通过signal来解耦代码358
附录F实现文章置顶的几种方案363
附录G以腾讯云为例演示部署流程365
猜你喜欢
- 2023-01-20 API相关VB范例电子书下载
- 2023-01-19 验证码识别相关学习资料
- 2022-07-07 网卡OUI信息数据库
- 2021-12-07 Visual C++ CAD 应用程序开发技术(带书签) pdf及光盘源码
- 2021-12-05 等离激元学 基础与应用.pdf
- 2021-12-03 AndroidCarrierClassTools V5.6
- 2021-12-02 《Django企业开发实战 高效Python Web框架指南》_胡阳_2019-02-01
- 2021-11-28 傅里叶变换及其应用
- 2021-11-25 自来水总公司 水厂、站库所运行维护技术规程
- 2021-10-27 数据库系统教程(第三版)课后习题答案 施伯乐
你 发表评论:
欢迎- 百度站内搜索
- 关注微信公众号
- 网站分类
-
- 网站公告
- 电子书书籍
- 程序员工具箱
- 编程工具
- 易语言相关
- 网络相关源码
- 图形图像源码
- 系统工具源码
- 易语言模块源码
- 易语言支持库
- 数据库类源码
- 易语言例程
- 易语言游戏开发
- 易语言模块
- 多媒体类源码
- 易语言资源网
- 易语言视频教程
- JS分析教程
- 易语言图文教程
- 易语言常见问题及笔记
- 工具源码
- 易语言版本
- 网络编程
- javascript
- PHP编程
- html
- 正则表达式
- 面试题
- nodejs
- 其它综合
- 脚本专栏
- python
- 按键精灵相关
- 按键精灵图文教程
- 按键精灵视频教程
- 按键精灵Q语言
- 按键精灵安卓版
- golang
- 游戏安全
- 火山相关
- 火山安卓软件
- 火山常见问题及笔记
- 火山安卓源码
- 火山视频教程
- 火山PC版本下载
- 火山PC视窗例程
- 互联网那些事
- 引流推广
- 项目揭秘
- 网络营销
- 营销软件
- QQ营销软件
- 娱乐软件
- 机器人插件
- 培训教程
- 技术教程
- 活动线报
- 数据库
- Redis
- Access
- MongoDB
- Mysql
- 问答
- 其它
- 易语言
- 需求
- 在线教程
- 多线程培训班
- 觅风易语言教程
- 模拟系列教程
- 集中营易语言教程
- 历史数据
- 随机tag
本文暂时没有评论,来添加一个吧(●'◡'●)