python作为解释型脚本语言,是一种通用的编程语言。由于python社区拥有大量的库文件、框架和其他的一些实用工具,我们可以用python完成各种各样的任务。另外,由于python的代码构成和结构就像英语句子一样自然,这种语言的学习曲线也比较平缓。因此和其他语言相比,好多网站开发人员更喜欢用python来确保代码的可读性。
然而,python一开始被设计出来的时候,并没有特别倾向于网站开发。正是由于这个原因,我们在使用python做网站时,就不得不借助数量繁多的web开发框架。在这篇文章里,我们聊一聊2018年将会流行的web框架。
最实用的框架列表:我们总结的5个
通过大量的试验总结,我们整理了5个最实用、最好用的框架。下面让我们细细道来:
Django
排位第一的当然是Django。事实上,正是由于Django的存在,成百上千的网站项目才能成功,python才能成为网站开发中最常用的语言。包括 Instagram, Mozilla Firefox, National Geographic, Pinterest, NASA等在内的大型机构、公司,都在使用Django作为网站开发框架。
这也就是为什么对于大多数网站开发者来说,如果使用python作为开发语言,那么Django就是唯一一个最常被提及的框架。尤其是因为下面的一些特性和优点,Django CMS总是作为网站开发中最基础、最常用的管理系统:
1、有好多拿来就能直接使用的模板
2、操作数据库
3、面向对象的编程方法
4、网络地址映射
5、内置网站服务器
6、可以使用HTML表单获取数据,并传递给服务器(在Django中实现这一功能实在是太简单了,以至于菜鸟也能轻松使用)
7、安全可靠的用户权限
8、直观的管理界面
9、强大的XML/JSON处理功能
由于上面提到的这些方面,Django能够胜任各种大型网站项目。你对这个框架心动了吗?如果没有,那我们看下一个。
CherryPy
CherryPy是仅次于Django的网站开发框架,它最大的特性就是能够同时运行好几个web服务。Django和CherryPy最大的区别在于,后者没有像前者那样多的模板,而是提供可以导入的库文件。事实上,这种方式给开发者以很大的自由度和扩展性,程序员可以自由的选择使用或者禁用各种模板、用户权限和数据库。
除此之外,CherryPy事实上是一个基于Python的简约而不简单的HTTP框架,允许和所有类型的服务器(如Apache等)进行交互。如果你是刚刚接触网站开发,一定要记住在项目中最好形成一套自己用着顺手的工具集合(我们应该清楚地知道,CherryPy具有灵活强大的插件系统)。
TurboGears
TurboGears是一种MVC架构的网站开发框架,它基于一些WSGI组件(比如SQLAlchemy, Ming, Repoze等)、模板引擎( Genshi, Kajiki, Cheetah, Myghty)和大量的库文件以及中间件(middleware)。同时它具有 widgets控件,可以非常方便的生成一些特定的功能。
TurboGears的主要特色是:用FormEncode进行表单验证;使用 Gearbox作为项目管理工具,并提供网络服务(新的版本也支持使用Apache或者Nginx作为服务器);许多实用的命令行工具;支持MochiKit模块,一种处理文本内容的genshi模板引擎,同时包含创建UI和Tosca Widgets的库文件。这些常用功能给程序员带来的方便,是其他框架所不能替代的。还有一点——许多使用TurboGears的程序员都会推荐它的精简模式,也就是说,TurboGears可以配置成最轻量级的框架。
Flask
Flask是一个相当新的框架,他的开发者在深入彻底的研究了现有的各种框架后,分析了它们利弊,在此基础上开发出了这一个取所有精华,去所有糟粕的web框架。
Flask是一个轻量级框架,简单易学,它在一些仅有一两个功能的小型项目上得到了大量应用。比如httpbin这样的项目,简单但非常强大。跟CherryPy差不多,支持所有的DBMS和模板引擎。Flask的优势在于拥有众多的扩展工具来创建基于网站的应用(应当鼓励初学者多使用这些工具),它的代码同样简洁明了(只要3行代码就能搭建一个显示“Hello World”的主页),通过蓝图(blueprint)实现模块化管理,支持Django官方模板语言Jinja2,能够创建基于API的方案和一次性工具(用其他框架实现这些功能的话,既费时又费力)。
Pyramid
我们提到的最后一个框架是Pyramid,它由Pylons项目中的一部分演变而来。Pyramid最大的特点就是灵活性和可扩展性(尤其和Django相比)。在使用Pyramid时,程序员可以自由的选择使用什么样的数据库、URL结构、模板风格等等,正如这个框架的开发者所说:
“那些重量级的框架都在替用户做决定。但是如果这些不适合你,你也无可奈何;轻量级的框架不替你做决定,你可以很快的上手。但是随着你的网站越做越大,你就会发现小框架限制了你的大项目。上面这两种情况,都是只关注项目的开始阶段:不是太大就是太小,换句话说,在项目刚开始的时候,你并不能真正的预测到项目后期会有多大、功能会有多复杂。你需要一个注重网站后期开发的框架,这样不管你的项目后期是大是小,它都能很好地满足你的需求。Pyramid就是这样一个框架,可大可小,刚刚好。”
使用Pyramid,可以不费劲的利用SQLAI创建传统的RDBMS应用。和Flask一样,Pyramid支持多种类型的模板语言和引擎,包括Jinja2和Mako,而且它自己也内置有解决方案。甚至,它还兼容Chameleon——一个便捷的、通用的ZPT模板工具。
Pyramid被大家广泛认可的优点包括:可以将一个完整的网站生成一个单一的文件;可以修改的模板;可配置的资源;灵活的身份验证和授权;高级的引导工具——pcreate;基于view的方法;支持命令型和陈述型的配置语法;HTTP缓存;内建Session会话等等。一般而言,Pyramid是目前最流行的构建大中小型应用的框架。另一方面,正是由于这么强大的灵活性,可能会让一些有选择困难症的初学者纠结于使用哪些功能,如果选择不好,可能会掉进一个又一个的坑里去。
选择Python web框架:怎样避免错误的选择
让我们总结一下。正如你所看到的,我们在选择合适的框架时,应该是依据自身的需求和项目的特点,量体裁衣。对于上面的几个框架,我都一视同仁,我并不坚持认为哪一个更好或者更差。
如果你想开发一款网络应用,却不知道选择哪一个合适的框架,最好的方法是找一些有经验的人请教。当然,你也可以联系我们。
英文原文:https://webcase.studio/blog/best-python-frameworks/?utm_source=catalogs&utm_campaign=python
译者:bird
∞∞∞∞∞
公众号回复“Python”,
邀你加入{ IT派Python技术群 }