前言
为什么要写这本书?
随着技术的发展,计算机及其他硬件越来越大众化。在许多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框架基础的读者,可以根据实际情况有重点地选择阅读各个模块和项目案例。
- 对于每一个模块和项目案例,先自己思考一下实现的思路,然后带着问号去阅读,学习效果会更好。