Web开发是Python语言应用领域的重要部分,也是工做岗位比较多的领域。若是你对基于Python的Web开发有兴趣,正打算开始学习使用Python作Web开发,或者已是一个Web开发者有工做须要,要作Web服务、自动化运维、数据的图形化展现等,那么学习一门基于Python的Web开发框架是必修课。前端
Python做为当前最火爆最热门,也是最主要的Web开发语言之一,在其二十多年的历史中出现了数十种Web框架,好比Django、Tornado、Flask、Twisted、Bottle和Web.py等,它们有的历史悠久,有的发展迅速,还有的已经中止维护。python
下面是一些比较有表明性的框架:mysql
发布于2003年,是当前Python世界里最负盛名且最成熟的Web框架,最初被用来制做在线新闻的Web站点。Django的各模块之间结合得比较紧密,因此在功能强大的同时又是一个相对封闭的系统(依然是能够自定义的),可是其健全的在线文档及开发社区,使开发者在遇到问题时能找到解决办法。web
一个强大的、支持协程、高效并发且可扩展的Web服务器,发布于2009年9月,应用于FriendFeed、Facebook等社交网站。它的强项在于能够利用异步协程机制实现高并发的服务。正则表达式
Python Web框架家族里比较年轻的一个,发布于2010年,它吸取了其余框架的优势而且把本身的主要领域定义在了微小项目上,以短小精干,简洁明了著称。sql
一个有着十多年历史的开源事件驱动框架。它不像前三种着眼于Web应用开发,而是适用从传输层到自定义应用协议的全部类型的网络程序的开发,并能在不一样的操做系统上提供很高的运行效率。可是,目前对Python3的支持有限,建议使用Python2.7。数据库
这么多的Web框架,咱们没有那么多的精力全都学一遍,也不可能所有精通,必然要有所取舍,那么该如何选择呢?有哪些能够参考的原则呢?django
下面的原则不必定正确,但能够做为参考:flask
首先介绍一下Django,Django具备如下特色:缓存
那么,咱们根据前面的选择原则咱们来逐条对比一下:
从Github的数据来看,Django的开发很是活跃,迭代速度也很是快。
Django以要素齐全、工具丰富、框架庞大著称,基本上别的框架有的它有,别的框架没有的它也有,若是Django知足不了需求,那么别的框架一样也同样。
Django有很长的开发和实践过程,或早或晚的文档、教程、帮助、博客等等很是多,资料更新速度也很快,好比博主我的网站的Django教程,你们没事能够逛逛,^-^。
一个框架可否流行起来,对新手入门是否友好很是关键。Django在这一点作的很是好。
不能光说优势,也说说一些缺点:
其实我不认同这一条,我真不认为这是个缺点。
首先,对于新手,Django集成好的工具和部件,让你无须再费脑力去学习如何安装、调试、集成、兼容别的工具。Django帮你把它们都集成好了,并且保证兼容性、可用性和方便性,就比如联想一体机,开机即用,效率也高。而一些如flask的框架,虽然精简,可是你要本身安装各类工具、ORM、插件等等,比如DIY电脑,在用以前,要知道买什么配件,怎么搭配,怎么组装,怎么配置效率才高,将新手的热情大量消耗在非关键性的内容上。
其次,对于老手,Django也是开放的,你彻底能够关闭没必要要的功能,忽略不使用的组件,或者自定义但愿的组件,包括ORM和Template在内,均可以自由选择。
所以,我认为Django系统庞大、捆绑工具不是问题。
从本质上来讲,Tornado在异步协程机制实现高并发的服务上要更强一点。Django在这方面有追赶的目标,但这不是说Django就差到不能用了,对么?
想要熟练地使用Django进行Web开发,设计生产环境可用的,可以应对必定规模访问量的Web应用,开发者要学会的远远不止Django自己。Python基础、环境搭建、前端语言、API设计、网站架构、系统管理、持续集成、服务化、数据处理、并发处理等等,都是相关的知识领域,包括但不限于如下的内容:
除此以外,还要对业务有深入理解,可以写出可维护性足够高的代码。固然,以上都是对经验丰富的开发者而言,对于新手刚入门者,咱们朝着这个目标努力学习就好。
下面是基于Python的Web开发技术栈: