为何选择Django?

Web开发是Python语言应用领域的重要部分,也是工做岗位比较多的领域。若是你对基于Python的Web开发有兴趣,正打算开始学习使用Python作Web开发,或者已是一个Web开发者有工做须要,要作Web服务、自动化运维、数据的图形化展现等,那么学习一门基于Python的Web开发框架是必修课。前端

Python做为当前最火爆最热门,也是最主要的Web开发语言之一,在其二十多年的历史中出现了数十种Web框架,好比Django、Tornado、Flask、Twisted、Bottle和Web.py等,它们有的历史悠久,有的发展迅速,还有的已经中止维护。python

1、基于Python的表明性Web框架

下面是一些比较有表明性的框架:mysql

Django:

image.png-11.5kB

发布于2003年,是当前Python世界里最负盛名且最成熟的Web框架,最初被用来制做在线新闻的Web站点。Django的各模块之间结合得比较紧密,因此在功能强大的同时又是一个相对封闭的系统(依然是能够自定义的),可是其健全的在线文档及开发社区,使开发者在遇到问题时能找到解决办法。web

Tornado:

image.png-25.1kB

一个强大的、支持协程、高效并发且可扩展的Web服务器,发布于2009年9月,应用于FriendFeed、Facebook等社交网站。它的强项在于能够利用异步协程机制实现高并发的服务。正则表达式

Flask:

image.png-60.5kB

Python Web框架家族里比较年轻的一个,发布于2010年,它吸取了其余框架的优势而且把本身的主要领域定义在了微小项目上,以短小精干,简洁明了著称。sql

Twisted:

image.png-41.1kB

一个有着十多年历史的开源事件驱动框架。它不像前三种着眼于Web应用开发,而是适用从传输层到自定义应用协议的全部类型的网络程序的开发,并能在不一样的操做系统上提供很高的运行效率。可是,目前对Python3的支持有限,建议使用Python2.7。数据库

2、选择框架的原则

这么多的Web框架,咱们没有那么多的精力全都学一遍,也不可能所有精通,必然要有所取舍,那么该如何选择呢?有哪些能够参考的原则呢?django

下面的原则不必定正确,但能够做为参考:flask

  • 选择更主流的框架。由于它们的文档更齐全,技术积累更多,社区更繁盛,能获得更好的帮助和支持。
  • 选择更活跃的框架。关注项目在GitHub等环境中的更新频率、Issue和Pull Request的响应状况。若是一个项目长期没有更新,或者有一堆的问题须要解决可是没有获得响应,就不该该是你学习的对象。
  • 选择可以知足需求的框架。没有最好的框架,只有更合适的框架。你所选择的Web框架不只须要知足当前的需求,还要充分考虑项目发展一段时间后的状况,即前瞻性,避免盲目选择而致使未来推倒重来的状况。
  • 选择时效性好的框架。在学习和使用框架的时候常常须要查阅和参考各类网络上的文章、博客和教程,可是须要注意他们的发表时间。有些框架的相关文章已经很老了,好久没更新了,应该放弃这种框架;有的框架一直以来都有不断的新文章、新博客出现,就是比较不错的选择。
  • 选择入门友好的框架。这条只对新手适用。详细的框架文档、官方教程对新手来讲都是极大的帮助和鼓励。

3、为何选择Django?

首先介绍一下Django,Django具备如下特色:缓存

  • 功能完善、要素齐全:该有的、能够没有的都有,自带大量经常使用工具和框架,无须你自定义、组合、增删及修改。
  • 完善的文档:通过十多年的发展和完善,Django有普遍的实践案例和完善的在线文档。开发者遇到问题时能够搜索在线文档寻求解决方案。
  • 强大的数据库访问组件:Django的Model层自带数据库ORM组件,使得开发者无须学习其余数据库访问技术(SQL、pymysql、SQLALchemy等)。
  • 灵活的URL映射:Django使用正则表达式管理URL映射,灵活性高。新版的2.0,进一步提升了URL编写的优雅性。
  • 丰富的Template模板语言:相似jinjia模板语言,不但原生功能丰富,还能够自定义模板标签,而且与其ORM的用法很是类似。
  • 自带后台管理系统admin:只须要经过简单的几行配置和代码就能够实现一个完整的后台数据管理控制平台。
  • 完整的错误信息提示:在开发调试过程当中若是出现运行错误或者异常,Django能够提供很是完整的错误信息帮助定位问题。

那么,咱们根据前面的选择原则咱们来逐条对比一下:

1.主流、活跃程度:

image.png-100.2kB

从Github的数据来看,Django的开发很是活跃,迭代速度也很是快。

2.是否能够知足需求:

Django以要素齐全、工具丰富、框架庞大著称,基本上别的框架有的它有,别的框架没有的它也有,若是Django知足不了需求,那么别的框架一样也同样。

3.时效性:

Django有很长的开发和实践过程,或早或晚的文档、教程、帮助、博客等等很是多,资料更新速度也很快,好比博主我的网站的Django教程,你们没事能够逛逛,^-^。

4.入门友好程度:

一个框架可否流行起来,对新手入门是否友好很是关键。Django在这一点作的很是好。

4、Django的不足

不能光说优势,也说说一些缺点:

  • 框架庞大,被认为不够精简、捆绑的内容太多

其实我不认同这一条,我真不认为这是个缺点。

首先,对于新手,Django集成好的工具和部件,让你无须再费脑力去学习如何安装、调试、集成、兼容别的工具。Django帮你把它们都集成好了,并且保证兼容性、可用性和方便性,就比如联想一体机,开机即用,效率也高。而一些如flask的框架,虽然精简,可是你要本身安装各类工具、ORM、插件等等,比如DIY电脑,在用以前,要知道买什么配件,怎么搭配,怎么组装,怎么配置效率才高,将新手的热情大量消耗在非关键性的内容上。

其次,对于老手,Django也是开放的,你彻底能够关闭没必要要的功能,忽略不使用的组件,或者自定义但愿的组件,包括ORM和Template在内,均可以自由选择。

所以,我认为Django系统庞大、捆绑工具不是问题。

  • 在异步通讯方面略有欠缺

从本质上来讲,Tornado在异步协程机制实现高并发的服务上要更强一点。Django在这方面有追赶的目标,但这不是说Django就差到不能用了,对么?


5、基于Python进行Web开发的技术栈

想要熟练地使用Django进行Web开发,设计生产环境可用的,可以应对必定规模访问量的Web应用,开发者要学会的远远不止Django自己。Python基础、环境搭建、前端语言、API设计、网站架构、系统管理、持续集成、服务化、数据处理、并发处理等等,都是相关的知识领域,包括但不限于如下的内容:

  • 熟悉Python语言
  • 对前端的HTML\CSS\Javascript比较熟悉
  • 对网络基础,好比HTTP、TCP/IP等比较熟悉
  • 熟悉数据库、缓存、消息队列等技术的使用场景和使用方法
  • 平常能使用Linux或Mac系统工做(Windows属于标配)
  • 有性能优化经验,能快速定位问题

除此以外,还要对业务有深入理解,可以写出可维护性足够高的代码。固然,以上都是对经验丰富的开发者而言,对于新手刚入门者,咱们朝着这个目标努力学习就好。

下面是基于Python的Web开发技术栈:

image.png-27.6kB


欢迎你们访问个人我的网站《刘江的博客和教程》www.liujiangblog.com

主要分享Python 及Django教程以及相关的博客!

相关文章
相关标签/搜索