Python的Web开发,也是工作岗位比较多的领域。如果你对Python的Web开发有兴趣,正打算开始学习使用Python做Web开发等,那么学习一门基于Python的Web开发框架是必修课。 Python作为当前最热门
Python的Web开发,也是工作岗位比较多的领域。如果你对Python的Web开发有兴趣,正打算开始学习使用Python做Web开发等,那么学习一门基于Python的Web开发框架是必修课。
Python作为当前最热门,也是最主要的Web开发语言之一,在其二十多年的历史中出现了数十种Web框架,比如Django、Tornado和Flask等,它们有的历史悠久,有的发展迅速,还有的已经停止维护。
一、基于Python的代表性Web框架
下面是一些比较有代表性的框架:
Django:
Python 界最全能的 Web 开发框架,battery-include 各种功能完备,可维护性和开发速度一级棒。常有人说 Django 慢,其实主要慢在 Django ORM 与数据库的交互上,所以是否选用 Django,取决于项目对数据库交互的要求以及各种优化。而对于 Django 的同步特性导致吞吐量小的问题,其实可以通过 Celery 等解决,倒不是一个根本问题。Django 的项目代表:Instagram,Guardian。
Tornado:
天生异步,性能强悍是 Tornado 的名片,然而 Tornado 相比 Django 是较为原始的框架,诸多内容需要自己去处理。当然,随着项目越来越大,框架能够提供的功能占比越来越小,更多的内容需要团队自己去实现,而大项目往往需要性能的保证,这时候 Tornado 就是比较好的选择。Tornado项目代表:知乎。
Flask:
微框架的典范,号称 Python 代码写得最好的项目之一。Flask 的灵活性,也是双刃剑:能用好 Flask 的,可以做成 Pinterest,用不好就是灾难(显然对任何框架都是这样)。Flask 虽然是微框架,但是也可以做成规模化的 Flask。加上 Flask 可以自由选择自己的数据库交互组件(通常是 Flask-SQLAlchemy),而且加上 celery +redis 等异步特性以后,Flask 的性能相对 Tornado 也不逞多让,也许Flask 的灵活性可能是某些团队更需要的。
二、选择框架的建议
这么多的Web框架,我们没有那么多的精力全都学一遍,也不可能全部精通,必然要有所取舍,那么该如何选择呢?有哪些可以参考的原则呢?
下面的建议不一定正确,但可以作为参考:
选择更主流的框架。因为它们的文档更齐全,技术积累更多,社区更繁盛,能得到更好的帮助和支持。
选择更活跃的框架。关注项目在GitHub等环境中的更新频率、Issue和Pull Request的响应情况。如果一个项目长期没有更新,或者有一堆的问题需要解决但是没有得到响应,就不应该是你学习的对象。
选择能够满足需求的框架。没有最好的框架,只有更合适的框架。你所选择的Web框架不仅需要满足当前的需求,还要充分考虑项目发展一段时间后的情况,即前瞻性,避免盲目选择而导致将来推倒重来的情况。
选择时效性好的框架。在学习和使用框架的时候经常需要查阅和参考各种网络上的文章、博客和教程,但是需要注意他们的发表时间。有些框架的相关文章已经很老了,很久没更新了,应该放弃这种框架;有的框架一直以来都有不断的新文章、新博客出现,就是比较不错的选择。
选择入门友好的框架。这条只对新手适用。详细的框架文档、官方教程对新手来说都是极大的帮助和鼓励。
三、为什么推荐Django框架?
Django具有以下特点:
功能完善、要素齐全:该有的、可以没有的都有,自带大量常用工具和框架,无须你自定义、组合、增删及修改。
完善的文档:经过十多年的发展和完善,Django有广泛的实践案例和完善的在线文档。开发者遇到问题时可以搜索在线文档寻求解决方案。
强大的数据库访问组件:Django的Model层自带数据库ORM组件,使得开发者无须学习其他数据库访问技术(SQL、pymysql、SQLALchemy等)。
灵活的URL映射:Django使用正则表达式管理URL映射,灵活性高。新版的2.0,进一步提高了URL编写的优雅性。
丰富的Template模板语言:类似jinjia模板语言,不但原生功能丰富,还可以自定义模板标签,并且与其ORM的用法非常相似。
自带后台管理系统admin:只需要通过简单的几行配置和代码就可以实现一个完整的后台数据管理控制平台。
完整的错误信息提示:在开发调试过程中如果出现运行错误或者异常,Django可以提供非常完整的错误信息帮助定位问题。
那么,我们根据前面的选择原则我们来逐条对比一下:
1.主流、活跃程度:
从Github的数据来看,Django的开发非常活跃,迭代速度也非常快。
2.是否可以满足需求:Django以要素齐全、工具丰富、框架庞大著称,基本上别的框架有的它有,别的框架没有的它也有,如果Django满足不了需求,那么别的框架同样也一样。
3.时效性:Django有很长的开发和实践过程,或早或晚的文档、教程、帮助、博客等等非常多,资料更新速度也很快,比如博主个人网站的Django教程,大家没事可以逛逛。
4.入门友好程度:一个框架能否流行起来,对新手入门是否友好非常关键。Django在这一点做的非常好。
(责任编辑:中博IT教育)