2018年最好用的5个python网站开发框架

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

原文发布于微信公众号 - IT派(transfer_3255716726)

原文发表时间:2018-04-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏芋道源码1024

Dubbo源码解析 —— 服务暴露原理

前言 之前讲完了dubbo集群容错系列,现在开始讲比较重要的环节,也就是dubbo面试中比较喜欢问的两个点: 服务发布和 服务引用. 插播面试题 服务发布过程...

39850
来自专栏编程

我是如何用Python获取整个学校女生电话和QQ?技术撩妹

前言: 这个没什么技术难度,懂爬虫的人和程序员都可以用学的语言写出来 只是很多安全问题的存在,的确影响着我们的生活, 希望大家可以认识到一些网站的后台密码的规则...

28670
来自专栏产品成长日志

工具|高效能人士文件管理神器

场景一:使用公司电脑编辑一个文档,到家后使用家用电脑继续编辑,第二天到公司接着修改,如何做效率比较高呢?

27530
来自专栏JAVA高级架构

高并发、高性能 Web 架构

31820
来自专栏重庆的技术分享区

聊聊用于构建微服务的工具和技术

原文地址:https://dzone.com/articles/tools-and-techniques-to-build-microservices

25260
来自专栏CSDN技术头条

使用HAProxy、PHP、Redis和MySQL支撑10亿请求每周架构细节

【编者按】在公司的发展中,保证服务器的可扩展性对于扩大企业的市场需要具有重要作用,因此,这对架构师提出了一定的要求。Octivi联合创始人兼软件架构师Anton...

50360
来自专栏数据和云

PayPal Oracle数据库的隐含参数

在这篇小文中,我和大家分享一下PayPal数据库的隐含参数,注意,本文参考资料来自网络OOW公开文档,只是我也是首次注意到这些设置。 在图中架构,可以看到Pay...

30780
来自专栏区块链

密码管理的最佳实践

通密之所以不应该被过分指责,是因为有其存在的道理,没有哪种方案的管理成本比它更低,它不需要购买昂贵的1password,不需要担心临时用的时候突然想不起来,而且...

23770
来自专栏杨建荣的学习笔记

迁移式升级的一点思考 (r10笔记第27天)

目前有一个很实际的需求,因为硬件老化严重,需要能够借助一次维护时机把数据库迁移到一台较好配置的机器上,避免潜在的硬件故障导致的业务停顿,也算防患于未然吧。 本来...

28970
来自专栏ThoughtWorks

组件测试:改建遗留系统的起点 | 洞见

在遗留系统中工作,无论是开发新功能,还是对旧功能进行修改,抑或是通过重构以期重拾其往日的雄风,都会面临大量的挑战。这些挑战主要来自于流失的业务知识、失传的技术和...

14230

扫码关注云+社区

领取腾讯云代金券