7

Django 是我最喜欢的 Python Web 框架。我已经尝试过其他的,如 pylons、web2py、nevow 等。

但我从来没有对 TurboGears 充满热情。

现在 TG2 测试版结束了,我可以试一试。我想知道与 Django 相比有哪些优缺点。

4

8 回答 8

15

TG2 有几个我认为很重要的优点:

  • 多数据库支持
  • 分片/数据分区支持
  • 长期支持聚合、多列主键
  • 为您处理多数据库事务的事务系统
  • 一个可与上述所有内容一起使用的管理系统
  • 开箱即用的可重用模板片段支持
  • 创建可重用模板标签库的简单方法
  • 更灵活地使用非标准组件

还有更多,但我认为知道 Django 比 TG2 有一些优势也很重要:

  • 更大、社区、更活跃的 IRC 频道
  • 更多可重用的应用程序组件
  • 更多开发的文档

所有这一切意味着 Django 比 TG2 更容易入门,但我个人认为您获得的额外功能和灵活性是值得的。但是您的需求可能总是不同的。

于 2009-03-31T22:21:15.483 回答
14

TG2 采用 Pylons 并更改了一些默认值 - 对象调度而不是 Routes,Genshi 而不是 Mako。他们相信只有一种方法可以做到这一点,因此应用程序可以依赖于任何 TurboGears 网站的相同 API。

相似之处

  • TG2 和 Django 都区分网站和组件,因此您最终也会看到TurboGears 的可重用构建块

差异

  • Django 使用自己的处理程序来处理 HTTP、路由、模板和持久性。Django 还拥有出色的文档和成熟的社区。

  • TurboGears 默认使用同类最佳库,显然是Paste、对象调度、GenshiSqlAlchemy。这种理念产生了一个更好的全能工具集,但存在不稳定的风险——因为这意味着如果出现更好的库,就会放弃向后兼容性。

于 2009-03-13T00:06:44.003 回答
5

优点。

  • SQLAlchemy > django ORM
  • 开箱即用的多种模板语言(genshi、mako、jinja2)
  • 对 WSGI 更友好
  • 对象调度 > 路由 > 正则表达式路由。您可以使用 TG2 获得前 2 个
  • 几乎所有组件都是可选的,您可以保留核心并使用任何 ORM、模板、身份验证库等。
  • Sprox > django 表单

缺点。- 管理员更基本(还没有内联对象!) - 更少的第三方应用程序 - “应用程序”系统仍在制作中。- 考虑到它的模块化,您需要从不同来源(SQLAlchemy、Genshi 或 Mako、repoze.who、Pylons 等)阅读文档

于 2009-09-07T00:40:33.993 回答
2

几个月前,我在同一个问题上苦苦挣扎,并决定使用Turbogears 2,我的推理很简单。“我是 python 新手,我想学习它不仅是为了 web 项目,而且是为了替代 php 来编写小助手的脚本

我不喜欢 Django 的地方,在我看来就像一个“封闭平台”。ORM、模板系统、会话等它们都是 Django 的

另一方面,Turbogears 2 使用已知的开放平台并将它们粘合起来,就像Appfuse为 Java所做的那样

通过 TurboGears 2,我学习了 SQLAlchemy,以后可以将其用于小型 Python 脚本,或者从 Python shell 中解决常见任务。

主要缺点是缺乏完整的文档和错误消息。

有时您必须非常深入地搜索才能找到简单的解决方案,学习曲线很陡峭,但从长远来看是值得的。让我非常困惑的错误消息(来自 10 多年的 Java 开发)。当真正的问题是未导入模块时,我花了很多时间试图找到“ascii 编码错误”。

这是我的观点,请记住我是 python 新手,我可能对这里所说的很多事情都错了。

于 2009-10-05T03:10:41.570 回答
1

除了 Nikhil 在他的回答中给出的内容之外,我认为另一个小区别是 Turbogears 提供了对 javascript 小部件和与Mochikit集成的一些支持。

而 Django 坚定地保持 javascript 框架中立。

(至少对于旧版本的 Turbogears 是这样的……这可能在 TG2 中有所改变)

编辑:我刚刚浏览了 TG2 文档,发现它确实发生了变化。Turbogears 现在使用 ToscaWidgets,它可以在下面使用 jQuery、ExtJS、Dojo 等。这很好地使它更加框架中立,同时仍然提供漂亮的 javascript 小部件。

如果你没有任何 javascript 经验,这让我觉得我是Turbogears的专业人士,如果你正在编写很多专门的 javascript,我觉得这是 Django 的专业人士。

于 2009-03-13T00:33:17.217 回答
1

最重要的问题之一不仅是该平台提供或该平台提供了哪些技术功能,还在于开源项目的驱动理念和支持它的社区的性质。

我自己在这场斗争中没有狗,但我发现Mark Ramm 在 2008 年 DjangoCon 上的演讲在这一点上非常有趣(毫无疑问,Google 将产生无止境的后续讨论)。

于 2009-03-13T02:16:20.773 回答
0

因为 Django 使用它自己的 ORM,所以它限制了您学习该特定 Web 框架的 ORM。我认为使用具有更流行的 ORM 的 Web 框架(例如 TG 使用的 SqlAlchemy)会增加您的就业机会。只是我的2美分..

于 2009-03-13T00:37:04.430 回答
0

最后我检查了一下,django 的数据实现很差。这是我书中的一个巨大弱点。Django 的 orm 不允许我使用底层数据库的功能。例如,我不能使用复合主键,这对良好的数据库设计很重要。它也不支持多个数据库,这没什么大不了的,直到您真正需要它并发现如果不求助于手动操作就无法做到这一点。最后,如果您必须以团队友好的方式更改数据库结构,您必须尝试在一组 3rd 方迁移工具之间进行选择。

Turbogears 似乎在架构上更合理,尽最大努力集成本身就很棒的各个工具。由于 TG 更像是一个集成器,您可以根据自己的喜好切换部件。不喜欢 SQL 炼金术?您可以使用 SQLObject。不喜欢 Genshi 模板?您可以使用 Mako 甚至 django,尽管您也没有完全坚持使用 django 的默认设置。

tg2 的缺点时间:

  • TG 有一个小得多的社区,而社区通常有它的好处。
  • Django 有一个更好的名字。我真的很喜欢这个名字;-)
  • 对于初学者来说,Django 似乎更简单,管理工具也很酷。
  • TG 有不错的文档,但你还需要去 Genshi 的站点学习 Genshi,SQL Alchemy 的站点来学习,等等。Django 有很好的文档。

我的 2 美分。

于 2009-03-13T14:06:02.910 回答