通过为开发人员提供应用程序开发结构,框架使开发人员的生活更轻松。他们自动执行通用解决方案,缩短开发时间,并允许开发人员更多地关注应用程序逻辑而不是常规元素。
在本文中,我们分享了我们自己的前十大python web框架列表,我们认为这些列表对于您成为专业后端开发人员以及改进现有技能集的方式将会非常有用。请记住,这些框架并没有按照特定的顺序排列:我们专注于展示你能做什么,而不是告诉你应该做什么。
有些事情要考虑
在决定使用哪个框架时,请查看项目的规模和复杂程度。如果您希望开发的是一个包含功能和需求的大型系统,那么全栈框架可能是正确的选择。如果你的应用在更小和更简单的一面,你应该考虑一个微框架。
你可以找到一些框架的种类和焦点信息在这里。但是,最终的决定应该来自您对项目的理解以及您想要简化的任务。
但是,框架也可能阻碍发展。在选择全栈框架时,您经常注册一组限制。当然,你可以找到解决这些问题的方法,但要小心,不要花更多的时间来争取自己的自由,而是要用纯python编写应用程序。
全堆栈框架
django是一个免费的开源全栈python框架。它试图默认包含所有必要的功能,而不是将它们作为单独的库提供。
django的一些示例性功能是它的身份验证,url路由,,对象关系映射器(orm)和数据库模式迁移(django v.1.7 +)。
django使用它的orm将对象映射到数据库表。相同的代码适用于不同的数据库,并不难从一个数据库转移到另一个数据库。django使用的主要数据库是postgresql,mysql,sqlite和oracle,但第三方驱动程序也允许您使用其他数据库。
在steelkiwi,我们使用django作为后端开发的主要框架。如果您想看看我们已经使用django开发的惊人的应用程序,请访问我们的项目页面。
pyramid是一个开源的基于python的web应用程序框架。其主要目标是尽可能以最小的复杂性进行操作。
金字塔最显着的特点是它能够同时适用于小型和大型应用程序。金字塔的一些很棒的功能包括:
单文件应用程序
全面支持模板和资产规范
灵活的认证和授权
,支持和全面的数据文档
和许多每个路由视图
turbogears是一个开源的,数据驱动的全栈web应用程序框架。
它允许您快速开发可扩展的数据驱动的web应用程序。turbogears配备了用户友好的模板和强大灵活的orm。
turbogears的一些独特功能包括:
多数据库支持
mvc风格的架构
支持sqlobject和sqlalchemy
和genshi包含在首选的模板语言中
使用formencode进行验证
作为网络服务器的塔
一个简化前端设计和服务器开发协调的应用程序库
模板
面向前端的基于wsgi的服务器(粘贴http服务器,cherrypy wsgi / http服务器等)
命令行工具
集成
所有功能都作为函数装饰器实现
web2py是一个可扩展的开源全栈python框架。但是,在进一步阅读之前,您应该知道web2py不支持python 3。
不过,web2py的优点在于它配备了自己的基于web的ide,其中包括代码编辑器,调试器和一键式部署。
其他有价值的web2py功能包括:
没有安装和配置要求
能够在windows,mac,linux / unix,google app engine,amazon ec2以及任何支持python 2.5-2.7或java + python的虚拟主机上运行
多种协议的可读性
数据安全可防止跨站点脚本,注入漏洞和恶意文件执行等漏洞
成功使用软件工程实践,使代码易于阅读和维护
错误跟踪,彻底的错误记录和票务
支持国际化
向后兼容性确保以用户为导向,而不需要失去与早期版本的联系
flask是一个在bsd许可下可用的python框架。它受到了sinatra ruby框架的启发。flask依赖于werkzeug wsgi工具包和jinja2模板。
flask背后的主要思想是帮助构建坚实的web应用程序基础。从那里,你可以使用任何你可能需要的扩展。
flask的轻量化和模块化设计使其能够轻松适应开发人员的需求。它包含许多有用的开箱即用功能:
内置开发服务器和快速调试器
集成支持单元测试
安全的cookie支持(客户端会话)
wsgi 1.0合规性
基于unicode
能够插入任何orm
http请求处理
瓶子是一个微框架。bottle最初意味着构建api,它将所有内容都实现在一个源文件中。除了python标准库之外,它没有任何依赖关系。使用bottle进行编码可以让您更接近金属而不是使用任何全栈框架进行编码。
其默认功能包括路由,模板,实用程序以及wsgi标准的基本抽象。
路由 - 支持对函数调用映射的请求,使您可以实现干净和动态的url
模板 - 快速和pythonic 开箱即用,全面支持mako,jinja2和猎豹
实用程序 - 舒适地访问表单数据,文件上传,cookie,标题和其他与http相关的元数据
服务器-支持一个内置的http开发服务器fapws3,比约恩,gae,сherrypy,以及任何其他wsgi能力的http服务器
bottle是原型开发,学习web框架组织以及构建简单个人应用的完美解决方案。
cherrypy是一个开源,极简主义的web框架。它使构建python web应用程序与构建任何其他面向对象的程序无异。
事实上,cherrypy支持的网络应用程序是一个独立的python应用程序,它嵌入了自己的多线程网络服务器。cherrypy应用程序可在任何支持python的操作系统上运行(windows,macos,linux等)。它们可以部署在任何可以运行普通python应用程序的地方。cherrypy应用程序不需要apache,但是您可以在apache后面运行cherrypy应用程序,以及在lighttpd或iis后面运行它。
cherrypy不是一个非常有限的框架,因为它允许您使用任何类型的技术进行模板化,数据访问等。但是,它仍然能够处理会话,静态,cookie,文件上传以及web框架通常可以执行的其他任何操作。
一些默认的cherrypy功能包括:
一个http / 1.1兼容wsgi线程池网络服务器
简单一次运行多个http服务器
一个强大的配置系统
一个灵活的插件系统
出的现成的工具缓存,编码,会话,认证,静态内容,并等
内置支持分析,覆盖和测试
能够在python 2.7+,python 3.1+,pypy,jython和android上运行
异步框架
sanic是一个构建在uvloop上的python web框架,专门为通过异步请求处理的快速http响应而创建。
它运行在python 3.5+上。sanic支持异步请求处理程序,这使它与python 3.5的异步/等待函数兼容。这提高了速度,提供了非阻塞功能。
在一个进程和100个连接的基准测试中,sanic每秒能够处理33,342个请求。
tornado是一个python web框架和异步网络库。它使用非阻塞网络i / o并解决c10k问题(意思是说,如果配置正确,它可以处理10,000多个并发连接)。
这使它成为构建需要高性能和数万并发用户的应用程序的理想工具。
龙卷风的主要特点是:
内置的用户认证支持
实时服务
高品质的性能
基于python的网页模板语言
非阻塞http客户端
实施第三方认证和授权计划(google openid / oauth,facebook登录,雅虎bbauth,friendfeed openid / oauth,)
支持翻译和本土化
其他
dash是一个开源python框架,用于构建分析型web应用程序。对于不熟悉web开发的python数据科学家来说,这尤其有利。
dash应用程序是运行并通过http请求与json数据包进行通信的web服务器。他们的前端使用呈现组件
使用dash开发的应用程序在web浏览器中呈现,并可以部署到服务器。这也意味着dash应用程序本质上是跨平台和移动就绪的。
dash开发人员可以访问底层flask实例及其所有可配置属性。为了扩展dash应用程序的功能,开发人员还可以使用一套丰富的
选择一个python web框架
正确的框架可能是您开发一个成功项目所需的一切。我们真的希望你在本文中找到了一个有趣的框架。如果您有兴趣探索更多选项。
另外,欢迎私信小编交流 python 的学习经验哦