Django与其他Python web框架的比较?

2024-05-13 07:20:31 发布

您现在位置:Python中文网/ 问答频道 /正文

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

但是,随着TurboGears2的推出,它带来了WSGI的支持,在阅读了Django和WSGI阵营之间的宗教辩论之后,我真的很纠结于“正确的做法”,例如,学习WSGI,花宝贵的时间编写Django和其他完整堆栈框架中已经存在的功能,而不是使用Django或一些为我做所有事情的高级框架。我可以看到后者的缺点非常明显:

  1. 在这个过程中我什么也没学到
  2. 如果我需要做任何低级的事情那会很痛苦的
  3. 仅使用身份验证的基本站点所需的开销是不合理的。(国际海事组织)

所以,我想我的问题是,哪一个是更好的选择,还是仅仅是一个意见问题,如果Django实现了我想要的功能,那么我应该接受它并使用它吗(我想要身份验证和到我的数据库的CRUD接口)?我试过Werkzeug、Glashammer和friends,但是AuthKit和Repoze把我吓跑了,而且只需要设置基本身份验证就需要几个步骤。我看了一下Pylons,但是文档似乎缺乏,当引用一些简单的特性(比如身份验证或CRUD接口)时,各种wiki页面和文档似乎相互矛盾,对版本等有不同的黑客攻击。


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

另外,我也试过CherryPy,但似乎找不到一个足够好的CRUD应用程序,我可以立即投入使用。


Tags: django文档功能框架身份验证webwsgiturbogears
1条回答
网友
1楼 · 发布于 2024-05-13 07:20:31

我要说的是,你对使用Django或类似的全堆栈框架“什么都不学”太悲观了,低估了文档和大型社区的价值。即使有了Django,仍然有一个相当大的学习曲线;如果它没有做您想要的任何事情,框架代码也不是不可穿透的。

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

相比之下,在过去的几年里,我关闭了一些与Django网站。与我以前的经验不同,它们实际上是部署和运行的。Django开发过程可能缓慢而谨慎,但它会导致更少的比特旋转和不推荐,以及实际有用的文档。

几周前对Djangofinally went in的HTTP身份验证支持,如果这是您在3中所指的话。

网友
2楼 · 发布于 2024-05-13 07:20:31

我建议再看看TG2。我认为人们没有注意到自上一个版本以来所取得的一些进步。除了可用的WSGi堆栈可用之外,还有许多TG2特定项目要考虑。以下是几个亮点:

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

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

如果你点击链接,你会看到我们有一套新的sphinx文档,它比过去的文档更广泛。

有了最好的web serverORMtemplate system(选择你自己的)在幕后,我们很容易明白为什么TG对于那些想快速发展的人来说是有意义的,并且随着他们的站点的增长仍然具有可伸缩性。

TurboGears通常被视为试图达到一个移动目标,但我们在发布方面是一致的,这意味着您不必担心为了获得所需的最新功能而脱离主干。展望未来:更多TurboGears扩展,使您的应用程序可以轻松地使用粘贴命令来增加功能。

网友
3楼 · 发布于 2024-05-13 07:20:31

the religious debates between the Django and WSGI camps

似乎你对WSGI和Django有点困惑。说Django和WSGI在竞争有点像说C和SQL在竞争:你在比较苹果和橘子。

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

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

相关问题 更多 >