Py学习  »  Django

Django与其他python web框架的对比?

Toni Ruža • 6 年前 • 2111 次点击  

我已经尝试了所有现存的python web框架,我花了很长时间才意识到没有一个银弹框架,每个框架都有自己的优点和缺点。我从一开始 Snakelets 我很高兴能在一个较低的层次上控制几乎所有的事情而不必大惊小怪,但后来我发现 TurboGears 从那以后我就一直在使用它(1.x)。像猫道和网络控制台这样的工具对我来说是无价的。

但随着涡轮齿轮2的推出,这带来了WSGi的支持,在阅读了Django和WSGi阵营之间的宗教辩论后,我真的很痛苦 “做得对” 例如,学习wsgi,花费宝贵的时间编写已经存在于django和其他完整堆栈框架中的功能,而不是使用django或为我做任何事情的高级框架。我可以看到后者的缺点非常明显:

  1. 在这个过程中我什么都没学到
  2. 如果我需要做任何低层次的事情,那将是一种痛苦。
  3. 仅使用身份验证的基本站点所需的开销是疯狂的。(国际海事组织)

所以,我想我的问题是,哪一个是更好的选择,还是仅仅是一个意见的问题,如果Django以最小的麻烦达到我想要的效果(我想要认证和我的数据库的CRUD接口),我应该接受它并使用它吗?我尝试过Werkzeug、Glashammer和朋友,但是AuthKit和Repoze吓跑了我,而且只需要设置基本身份验证就可以完成很多步骤。我查看了pylons,但文档似乎缺乏,当引用诸如身份验证或CRUD接口之类的简单功能时,不同的wiki页面和文档似乎相互矛盾,对版本进行了不同的黑客攻击。


感谢S.Lott指出我不够清楚。我的问题是:从长远来看,以下哪一项是值得的,但从短期来看并不痛苦(例如,某种中间立场,任何人?)-学习wsgi,还是坚持使用“包含电池”的框架?如果是后者的话,我会很高兴有人建议我是否应该再给姜戈一次尝试,还是继续使用1.x涡轮齿轮,或者尝试其他框架。

另外,我尝试过Cherrypy,但似乎找不到一个足够好的CRUD应用程序,我无法立即投入使用。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30692
 
2111 次点击  
文章 [ 13 ]  |  最新文章 6 年前
John Finch
Reply   •   1 楼
John Finch    9 年前

web2py是这里的秘密酱汁。别忘了检查一下。

Shekhar
Reply   •   2 楼
Shekhar    16 年前

我建议买涡轮齿轮2。他们在集成最好的Python世界方面做得非常出色。

WSGI: 假设您正在TG2或其他一些框架(比如grok)中开发中等复杂的项目/业务解决方案。即使这些框架支持wsgi,这是否意味着使用这些框架的人必须学习wsgi?在大多数情况下,答案是否定的。我的意思是,毫无疑问,拥有这种知识是件好事。

WSGi知识在以下情况下可能更有用

  • 您希望使用一些中间件或其他一些组件,这些组件不是作为标准堆栈的一部分提供的,例如带有tg或 Grok without ZODB .
  • 您正在进行一些集成。

樱桃色 很好,但是可以考虑在事务结束时处理数据库提交/回滚,公开JSON,在这种情况下进行验证,tg,django-like框架可以为您完成所有工作。

Dan
Reply   •   3 楼
Dan    16 年前

我是涡轮齿轮风扇,这正是原因所在:在控制和做正确的事情和简单的事情之间进行一个非常好的权衡。

当然,你得自己决定。也许你更喜欢少学,也许多学。也许是我喜欢知识/控制的领域(例如数据库),你不会不关心。不要误解。我并没有将任何框架描述为必然的困难或错误。这只是我的主观判断。

如果可能的话,我也会推荐涡轮齿轮2。当它出现的时候,我认为它会比1.0更好,因为它选择了默认值(genshi,pylons,sqlacalchemy)。

lispmachine
Reply   •   4 楼
lispmachine    16 年前

塔架对我来说是一个很好的工具:

  • 一个真正的Web框架(Cherrypy只是一个Web服务器)。
  • 小代码库-重用其他项目,
  • 完全用WSGi编写,基于Paste,
  • 允许您立即对应用程序进行编码,并在必要时触摸低电平位,

我已经使用了奇瑞和涡轮齿轮,并研究了许多其他的框架,但它们都没有像塔架那样轻和高效。检查 presentation at Google .

David Berger
Reply   •   5 楼
David Berger    16 年前

Django绝对值得学习,听起来很适合你的目的。它附带的管理界面易于启动和运行,并且使用身份验证。

至于“任何更低级别的内容”,如果您的意思是SQL,则完全可以使用额外的关键字将SQL推送到查询中。在风格上,你总是尽量避免这种情况。

至于“什么都不学”……真正的问题是,你的偏好主要是学习较低或更高层次的东西,这不是任何人都能回答的问题。

Kylotan
Reply   •   6 楼
Kylotan    16 年前

我想说,正确的答案取决于你真正想要和需要什么,因为从长远来看,什么是值得的取决于你在长远来看需要什么。如果您的目标是尽快部署应用程序,那么“更简单”的方法,即Django,无疑是一种可行的方法。一个经过良好测试并有良好文档记录的系统的价值,这正是你想要的,不可低估的。

另一方面,如果你有时间学习各种新事物,这些新事物可能适用于其他领域,并希望有最广泛的定制范围,那么像涡轮齿轮这样的东西是优越的。涡轮齿轮给你最大的灵活性,但你 必须花很多时间阅读外部文档,比如repoze、sqlacalchemy和genshi,才能完成任何有用的工作。在某些情况下,tg2文档故意比tg1文档更不详细,因为它认为外部文档比以前更好。这类事情是障碍还是投资取决于你自己的要求。

greg
Reply   •   7 楼
greg    16 年前

你退房了吗?在最近评估了许多PythonWeb框架之后,我决定采用这个框架。如果你还没有的话,还可以看看谷歌应用引擎。

Community VonC
Reply   •   8 楼
Community VonC    8 年前

学习WSGI

WSGi非常简单。它基本上是一个函数,看起来……

def application(environ, start_response) pass

接收到HTTP请求时调用该函数。 environ 包含各种数据(如请求URI等)。 start_response 是一个可调用函数,用于设置头。

返回值是网站的主体。

DEF应用程序(环境,启动响应): 启动响应(“200 OK”,[]) 返回“…”

就这些了,真的……它不是一个框架,而是一个用于Web框架的协议。

对于创建站点,使用wsgi是 “正确的方法”——使用现有框架是……但是,如果您正在编写一个python web框架,那么使用wsgi绝对是正确的方法。

您使用的框架(Cherrypy、Django、Turbogears等)基本上是个人偏好。在每一个游戏中玩,看看你最喜欢哪一个,然后使用它。关于这个有一个stackoverflow问题(有一个很好的答案)。 "Recommendation for straight-forward python frameworks"

Martin
Reply   •   9 楼
Martin    16 年前

你看过奇瑞皮吗?它是极简的,但又高效和简单。它的级别很低,不足以阻止它们,但足以隐藏复杂性。如果我记得好的话,涡轮齿轮是建立在它之上的。

有了奇瑞,你可以选择很多东西。(模板框架、ORM(如果需要)、后端等)

Mark Ramm
Reply   •   10 楼
Mark Ramm    12 年前

您的问题似乎是“是否值得学习WSGi并自己做所有事情”,或者使用“为您做所有事情的完整堆栈框架”。

我会说这是一个错误的二分法,有明显的第三种方法。TurboGears2试图提供一个从“为您做一切”风格的框架到对WSGi中间件的理解的平滑路径,并且能够定制框架的几乎所有方面以满足您的应用程序的需要。

我们可能在每一个级别的每个地方都不成功,但特别是如果你已经有了一些涡轮齿轮1的经验,我认为TG2学习曲线将非常,非常容易在一开始,你将有能力去更深入,当你需要它的时候。

要解决您的特定问题:

  • 我们提供了一个现成的授权系统,与您在TG1中使用的系统相匹配。
  • 我们提供了一个开箱即用的类似于“django-admin”的界面,称为tgext.admin,它与Dojo一起使用非常好,可以使一个类似电子表格的界面成为默认界面。

我还想讨论一些其他的选择,在那里,并谈一点福利。

  • 樱桃色的 我认为Cherrypy是一个伟大的Web服务器和一个优秀的极简主义Web框架。它不是基于内部的wsgi,但是有良好的wsgi支持,尽管它不会为您提供“完整的堆栈”体验。但是对于那些既需要快速又不特别适合django或turbogears提供的默认设置的自定义设置来说,这是一个很好的解决方案。

  • 詹戈 我认为django是一个非常好的集成系统,用于开发网站。如果您的应用程序和工作风格很好地符合它的标准设置,它可以是非常棒的。但是,如果您需要调整您的数据库使用,替换模板语言,使用不同的用户授权模型,或者以其他方式做不同的事情,您很可能会发现自己在与框架作斗争。

  • 塔柱 像奇瑞皮这样的塔架是一个伟大的极简主义网络框架。与Cherrypy不同的是,它通过整个系统启用了wsgi,并提供了一些健全的默认值,比如sqlacalchemy和mako,可以帮助您很好地扩展。新的官方文档的质量比旧的wiki文档要好得多,而你似乎已经看到了这些文档。

Nicholas Riley
Reply   •   11 楼
Nicholas Riley    16 年前

我想说,您对使用django或类似的完整堆栈框架“没有学习任何东西”感到有点悲观,并且低估了文档和大型社区的价值。即使有了Django,仍然有相当大的学习曲线;如果它不做任何你想做的事情,它不像框架代码是不可穿透的。

一些个人经验:我花了很多年的时间,断断续续地,在twisted/nevow、turbogears和其他一些python web框架上混日子。我从来没有完成任何事情,因为框架代码一直没有完成,在我的下面被重写,文档通常不存在或错误,唯一可行的支持是通过IRC(在那里我经常得到很好的建议,但如果我问了太多的问题,感觉我是强加)。

相比之下,在过去的几年里,我与Django合作过一些网站。与我以前的经验不同,它们实际上是部署和运行的。Django的开发过程可能很慢,也很小心,但它会减少比特率和反预测,以及实际有用的文档。

Django的HTTP身份验证支持 finally went in 几周前,如果这就是你在3中所指的话。

Jason Baker
Reply   •   12 楼
Jason Baker    16 年前

Django和WSGi营地之间的宗教辩论

似乎你对什么是wsgi和什么是django有点困惑。说Django和WSGi在竞争,有点像说C和SQL在竞争:你在比较苹果和橙子。

django是一个框架,wsgi是一个协议(由django支持),用于服务器如何与框架交互。最重要的是,直接学习使用wsgi有点像学习组装。这是一个很好的学习经验,但它并不是您真正应该为生产代码做的事情(它也不是有意的)。

无论如何,我的建议是你自己解决。大多数框架都有一个“一小时内创建一个wiki/blog/poll”类型的练习。花点时间和每个人在一起,找出你最喜欢哪一个。毕竟,如果您不愿意尝试不同的框架,您如何在它们之间做出决定?

percious
Reply   •   13 楼
percious    16 年前

我建议再看一下TG2。我认为人们没有注意到自上一个版本以来所取得的一些进展。除了不断增长的可用的wsgi实用程序之外,还有很多tg2特定的项目需要考虑。以下是几个亮点:

TurboGears Administration System -这个到数据库的CRUD接口可以使用声明性配置类完全自定义。它还与Dojo集成,为您提供无限可滚动的表。服务器端验证也是自动化的。管理接口使用RESTful URL和HTTP谓词,这意味着使用行业标准编程连接起来很容易。

CrudRestController / RestController -涡轮齿轮提供了一种结构化的方式来处理控制器中的服务。通过扩展我们的restcontroller,使您能够使用标准化的HTTP动词。联合 Sprox 使用crudestController,您可以使用完全可自定义的自动生成的表单将crud放在应用程序的任何位置。 turbogears现在支持将mime类型作为url中的文件扩展名,因此您可以让您的控制器render.json和.xml具有它用来呈现html的相同接口(从控制器返回字典)。

如果你点击链接,你会发现我们有一套新的斯芬克斯文档,它比过去的文档更广泛。

用最好的 web server , ORM template system (S)(选择自己的)在幕后,很容易理解为什么TG对于那些想要快速发展,并且随着站点的增长仍然具有可扩展性的人来说是有意义的。

涡轮齿轮通常被视为试图击中移动目标,但我们对发布保持一致,这意味着您不必担心走出后备箱获得所需的最新功能。未来:更多的涡轮齿轮扩展,将允许您的应用程序增长的功能与容易的巴斯德命令。