开发工程师the5fire教你学会如何使用流行的Python,Web框架Django
介绍Python Web框架Django在企业中的应用的书籍,从零开发到部署完整案例,Django企业开发实战高效Python Web框架指南电子版是开发工程师the5fire多年开发经验总结,以博客系统为原型,教你以真实的视角搭建自己的生产环境。
Django企业开发实战高效Python Web框架指南电子版预览
内容简介
本书以从零开发一个博客系统为例,介绍Django在日常工作中的应用。
本书共分为四部分。第一部分介绍编码之前的准备工作,包括需求分析、Web开发基础以及选型时Demo的练习。第二部分开始正式实现需求,介绍了环境配置、编码规范以及合理的项目结构划分。通过对Django各部分(Model、Form、admin、View)的介绍和使用,完成了一个基础的博客系统。第三部分在前面的基础上介绍Django第三方插件的使用,通过引入这些插件进一步增强我们的系统。最后一部分也是正式工作中必不可少的部分,包含调试代码、优化系统、压力测试以及自动化等内容。
本书适合Python Web开发人员阅读。
作者介绍
胡阳,网名the5fire,前搜狐开发工程师,现任知乎开发工程师,负责部分业务的后端开发和团队管理。
具有10年编程经验和写博客经验,喜欢通过代码来构建一些有价值的东西,也爱好记录和分享自己的经验。
2011年从Java转到Python后,便不可自拔,主要熟悉的Web框架是Django和Tornado。赞叹于Python的开发效率,欣赏Django完备的功能点对实际项目开发中程序员生产力的提升。
目录大全
第一部分初入江湖
第1章需求2
11需求文档3
12需求评审/分析4
121博客需求评审5
122评审之后6
13功能分析6
131需求列表6
132功能点梳理7
133模块划分8
14模块划分9
141实体及关系9
142模块划分10
15本章总结12
第2章框架基础和技术选型13
21Python27与Python3x13
211历史演进13
212现实场景14
213为未来做准备15
214参考资料15
22WSGI——Web框架基础15
221简介15
222简单的WebServer16
223多线程版的WebServer17
224简单的WSGIApplication20
225理解WSGI22
226WSGI中间件和Werkzeug23
227参考资料24
228扩展阅读24
23Flask框架24
231入门推荐25
232Flask内置功能25
233匹配需求26
234总结26
24Tornado框架26
241印象26
242内置功能27
243总结27
25Django框架28
251新手友好程度28
252内置功能29
253总结29
254参考资料29
26本章总结30
第3章Django小试牛刀31
31如何阅读Django文档31
311文档结构31
312总结36
32学员管理系统的后台开发37
321需求37
322初始化环境37
323创建项目38
324创建App38
325编写代码39
326基础配置(中文)41
327总结41
33学员管理系统的前台开发41
331开发首页41
332输出数据42
333提交数据44
334优化数据,获取逻辑47
335总结47
34学员管理系统的进阶部分48
341使用class-basedview48
342配置middleware49
343编写TestCase提升代码稳定性53
344总结57
35本章总结57
第二部分正式开发
第4章进入开发60
41编码规范60
411importthis(Python之禅)61
412Python编码规范62
413Django编码风格66
414总结69
415参考资料69
42虚拟环境69
421Python33之后自带venv模块69
422virtualenv的用法70
423总结71
424参考资料71
43合理的项目结构71
431原则71
432通用项目结构71
433Django项目结构72
434总结74
435参考资料74
44版本管理与协作:Git74
441我们的协作方式74
442Git的基本概念75
443案例演示76
444Git进阶76
445总结80
446参考资料80
45本章总结80
第5章奠定项目基石:Model81
51创建项目及配置81
511拆分settings以适应不同的运行环境83
512配置settings84
513配置Git85
514总结86
515参考资料86
52编写Model层的代码86
521创建App87
522配置INSTALLED_APPS92
523创建数据库[表]93
524提交代码95
525总结96
526参考资料96
53Model层:字段介绍96
531ORM的基本概念97
532常用字段类型98
533参数99
534总结100
535参考资料101
54Model层:QuerySet的使用101
541QuerySet的概念101
542常用的QuerySet接口102
543进阶接口104
544常用的字段查询105
545进阶查询106
546总结107
547参考资料107
55本章总结107
第6章开发管理后台108
61配置admin页面108
611创建blog的管理后台109
612comment的admin配置115
613config的admin配置115
614详细配置116
615总结117
62根据需求定制admin117
621定义list页面117
622编辑页面的配置120
623自定义静态资源引入122
624自定义Form123
625在同一页面编辑关联数据123
626定制site124
627admin的权限逻辑以及SSO登录125
628总结127
629参考资料127
63抽取Admin基类127
631抽象author基类127
632总结131
64记录操作日志131
641使用LogEntry131
642查询某个对象的变更133
643在admin页面上查看操作日志133
65本章总结134
第7章开发面向用户的界面135
71搭建基础结构与展示文章数据135
711分析URL和页面数据135
712编写URL代码137
713编写View代码138
714配置模板139
715模板找不到的错误处理140
716编写正式的View代码141
717配置模板数据142
718总结144
719参考资料144
72配置页面通用数据144
721完善模板信息144
722重构post_list视图146
723分类信息147
724侧边栏配置150
725总结150
73封装侧边栏逻辑150
731调整模型151
732封装好SideBar151
733总结153
74整理模板代码153
741抽象基础模板153
742解耦硬编码155
743总结157
75升级至class-basedview157
751函数与类157
752理解class-basedview157
753改造代码162
754总结166
755参考资料166
76Django的View是如何处理请求的166
761class-basedview的处理流程166
762总结167
77本章总结167
第8章引入前端样式框架Bootstrap168
81Bootstrap的基本用法169
811介绍169
812容器和栅格系统169
813简单的页面布局171
814总结174
815参考资料174
82基于Bootstrap美化页面174
821增加themes目录175
822修改模板176
823总结180
83配置线上静态资源180
831内联CSS和外联CSS180
832Django中的静态资源181
833在模板中使用静态资源182
834总结183
835参考资料183
84本章总结183
第9章完成整个博客系统184
91增加搜索和作者过滤184
911增加搜索功能185
912增加作者页面186
913总结186
92增加友链页面186
93增加评论模块188
931评论提交的方式188
932评论模块通用化改造188
933实现评论190
934抽象出评论模块组件和Mixin195
935修改最新评论模板197
936总结197
937参考资料197
94配置Markdown编写文章的支持197
941Markdown第三方库197
942评论内容支持198
943文章正文使用Markdown198
944配置代码高亮199
945总结201
946参考资料201
95增加访问统计201
951文章访问统计分析202
952实现文章访问统计203
953更加合理的方案206
954总结206
955参考资料206
96配置RSS和sitemap206
961实现RSS输出206
962实现sitemap208
963配置RSS和sitemap的urlspy209
964总结210
965参考资料210
97本章总结210
第三部分第三方插件的使用
第10章使用第三方插件增强管理后台214
101xadmin介绍和使用215
1011特性215
1012安装最新的xadmin代码216
1013admin替换为xadmin216
1014fieldset修改为FieldSet218
1015静态资源Media配置219
1016自定义过滤器219
1017数据处理上的差异221
1018处理inline221
1019sitetitle和sitefooter的处理222
10110去掉Djangoadmin自带的log配置222
10111总结222
102使用django-autocomplete-light优化性能222
1021创造1万个分类223
1022django-autocomplete-light介绍224
1023引入插件224
1024总结226
1025参考资料226
103使用django-ckeditor开发富文本编辑器226
1031基础配置227
1032配置图片228
1033上传图片配置228
1034自定义存储以及水印229
1035Markdown和django-ckeditor共存231
1036总结234
1037参考资料234
104本章总结235
第11章使用django-rest-framework236
111接口需求及django-rest-framework介绍237
1111快速上手237
1112配置APIdocs240
1113总结242
1114参考资料242
112生成我们的RESTful接口242
1121区分list和detail242
1122实现分页243
1123实现Category接口244
1124HyperlinkedModelSerializer的使用246
1125其他数据接口的实现248
1126总结248
1127参考资料248
113本章总结249
第四部分上线前的准备及线上问题排查
第12章调试和优化252
121常用的调试和调优手段252
1211调试手段252
1212调优手段259
1213总结262
1214参考资料262
122使用django-debug-toolbar优化系统262
1221快速配置262
1222解读数据263
1223配置第三方panel267
1224line_profiler269
1225总结271
1226参考资料271
123使用silk271
1231快速配置silk271
1232配置profiling273
1233总结273
1234参考资料273
124本章总结274
第13章配置MySQL和缓存275
131配置MySQL275
1311使用CONN_MAX_AGE优化数据库连接276
1312配置正式的settings277
1313总结277
1314参考资料277
132缓存的演化278
1321什么是缓存278
1322缓存装饰器279
1323增强缓存装饰器280
1324不引入Redis吗283
1325继续演变我们的缓存逻辑284
1326Django中的缓存配置284
1327配置Redis缓存286
1328应用场景和缓存的粒度287
1329总结287
13210参考资料288
133本章总结288
第14章上线前的准备289
141你的代码如何为用户提供服务290
1411整体结构290
1412项目部署方案291
1413系统架构292
1414总结292
142标准化打包和自动化部署292
1421配置项目的setuppy293
1422sdist与bdist_wheel295
1423配置内部PyPI服务器296
1424自动化部署298
1425编写fabfile配置299
1426总结303
1427参考资料304
143在生产环境中运行项目304
1431为什么需要使用Gunicorn304
1432Gunicorn简介305
1433使用Gunicorn306
1434Supervisor介绍307
1435自动化部署和supervisord310
1436setuppy和requirementstxt311
1437配置正式settings312
1438静态文件处理315
1439总结315
14310参考资料315
144配置Nginx315
1441Nginx介绍315
1442为什么使用Nginx316
1443配置Nginx318
1444总结320
1445参考资料320
145常用的监控方式320
1451实时监控320
1452统计分析321
1453业务监控(埋点统计)322
1454总结322
146试试你的系统能抗多少请求322
1461计算系统承载量322
1462反推一下324
1463压力测试324
1464压测工具介绍324
1465完全模拟真实流量326
1466缓存加速访问327
1467总结328
1468参考资料328
147本章总结328
第15章升级到Django20329
151Django2x——Python2时代的逝去329
152轻松升级到Django20330
1521几个重要的变化330
1522第三方库的升级331
1523总结331
153本章总结332
第16章最后总结333
161技术栈总结333
1611技术栈列表333
1612总结334
162后续可实践方向334
1621精于一点335
1622持续滚动雪球335
163DjangoWeb开发技术栈清单336
1631Python基础336
1632Django基础336
1633Django进阶338
1634部署相关338
1635MySQL数据库339
1636Redis339
1637常用算法339
1638总结339
164最后340
附录A使用Fabric20341
附录B使用uWSGI来启动Django程序347
附录CSentry安装和配置350
附录D评论验证码功能354
附录E通过signal来解耦代码358
附录F实现文章置顶的几种方案363
附录G以腾讯云为例演示部署流程365