有人能指出TG2相对于Django的优缺点吗?(涉及IT技术)

7

但我从未对TurboGears有太多热情。

现在,随着TG2退出beta版,我可能会尝试一下。我想知道与Django相比,它的优缺点是什么。

8个回答

15

TG2有几个重要的优势:

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

还有更多,但我认为了解 Django 相对于 TG2 的一些优势也很重要:

  • 更大、更活跃的社区 IRC 频道
  • 更多可重用的应用程序组件
  • 稍微完善一点的文档

这意味着在 Django 中开始变得更容易,但我个人认为得到的增强功能和灵活性是值得的。 但是您的需求可能有所不同。


14
TG2采用Pylons并更改了一些默认设置——使用对象分发而不是Routes,以及使用Genshi而不是Mako。他们认为只有一种方法来做, 所以应用程序可以依赖于任何TurboGears网站的相同API。

相似之处

  • TG2和Django都区分网站和组件,所以您最终将看到可重用的构建块也适用于TurboGears。

不同之处

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

  • TurboGears默认使用最佳库,显然是Paste、对象分发、GenshiSqlAlchemy。这种哲学产生了更好的全方位工具集,但风险在于如果更好的库出现,就意味着放弃向后兼容性。


这是很多流行语和框架名称需要应对的!天啊! - Jarret Hardie
欢迎来到开源技术栈。没有什么是孤立存在的。 - S.Lott

5

优点:

  • SQLAlchemy 比 django ORM 更好用
  • 内置多种模板语言(genshi、mako、jinja2)
  • 更加适合 WSGI
  • 对象分发 > routes > 正则表达式路由。你可以在 TG2 中获得前两个。
  • 几乎所有组件都是可选的,你可以保留核心并使用任何 ORM、模板、认证库等。
  • Sprox 比 django forms 更好用

缺点:

  • 管理界面更为基础(尚未支持行内对象!)
  • 第三方应用较少
  • "app" 系统仍在开发中
  • 由于其模块化设计,你需要从不同的来源阅读文档(如 SQLAlchemy、Genshi 或 Mako、repoze.who、Pylons 等)

+1 for Sprox - 之前没听说过,但看起来非常棒!!(在项目网站上检查一下教程就知道了) - Martin

2
我在几个月前也曾为这个问题烦恼,最终选择了TurboGears 2,并且我的想法很简单。"我是Python的新手,我想学习它不仅仅是为了网站项目,而且还可以作为PHP的替代品来编写小型帮助脚本"

对我来说,Django的不足之处在于它看起来像是一个"封闭平台"。ORM,模板系统,会话等等都是Django的。

另一方面,Turbogears 2使用已知的开放平台并将它们粘合在一起,就像Java中的Appfuse一样。

使用TurboGears 2,我学习了SQLAlchemy,以后可以用它来编写小型Python脚本,或者从Python shell中解决常见任务。

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

有时你需要深入搜索才能找到简单的解决方案,学习曲线陡峭,但从长远来看是值得的。对我而言,错误消息非常令人困惑(我有10多年的Java开发经验)。我曾花费许多时间寻找"ascii encode error"时真正的问题是模块没有被导入。

这就是我的观点,请记住,我是Python的新手,我可能在这里说错了很多事情。


1
除了Nikhil在他的回答中提到的内容,我认为另一个小的区别是Turbogears提供了一些支持javascript小部件和与Mochikit的集成Mochikit
而Django则坚定地保持javascript框架中立。
(至少在旧版本的Turbogears中是这样...但这可能已经随着TG2的推出而改变了)
编辑:我刚刚查看了TG2文档,并发现它确实发生了变化。 Turbogears现在使用ToscaWidgets,可以在其下使用jQuery、ExtJS、Dojo等。这很好地使它更加框架中立,同时仍然提供漂亮的javascript小部件。
如果您没有任何javascript经验,这对Turbogears来说是一个优点,如果您正在编写大量专业的javascript,则对Django来说是一个优点。

我猜你可以忽略TG2的JavaScript集成,像使用Django一样编写自己的JavaScript,因此如果编写专门的JavaScript,不应该有任何劣势。 - Ali Afshar
可能可以,但是你可能还需要选择另一个表单库。换句话说,我不确定没有 Tosca 小部件是否能够使用 Tosca 表单。 - Van Gale
ToscaWidgets JS是一个简单的便利工具,完全可选。例如,我有几个TG2项目没有使用TW库的版本,它们也可以正常运行。至于您最后的评论,TW被分成几个包,您可以选择您需要的内容,所有JS都是可选的,这与您的评论无关。 - Jorge Vargas

1

其中最重要的问题不仅是这个平台或那个平台提供了哪些技术特性,而是开源项目的驱动哲学和支持它的社区的本质。

我自己对此并没有太多的看法,但我发现Mark Ramm在DjangoCon 2008上的演讲在这一点上非常有趣(毫无疑问,谷歌会产生无数后续讨论)。


0

因为Django使用自己的ORM,这限制了你只能学习该特定Web框架的ORM。我认为使用一个更流行的ORM(例如TurboGears使用的SqlAlchemy)的Web框架可以增加你的就业机会。这只是我的个人看法。


但是你不必使用Django ORM。例如,你可以在Django中使用SqlAlchemy。 - Brian Neal
如果只是增加工作量,使用SqlAlchemy和Django有什么意义呢? - Joshua Partogi
@Brian Neal,你指的是放在阁楼上的分支还是由一个人开发的第三方分支?我非常建议你用一些代码来支持你的论点。 - Jorge Vargas

0
最后一次我检查时,django的数据实现非常糟糕。在我的书中,这是一个巨大的弱点。Django的ORM不允许我使用底层数据库的功能。例如,我无法使用复合主键,这对于良好的数据库设计非常重要。它还不支持多个数据库,这并不是什么大问题,直到你真正需要它,并发现你不能手动完成它。最后,如果你必须以团队友好的方式对数据库结构进行更改,你必须尝试在一组第三方迁移工具之间进行选择。
Turbogears似乎更具有架构上的优势,尽力整合了各种独立的工具。由于TG更像是一个集成器,因此您可以切换出适合自己喜好的部分。不喜欢SQL Alchemy?您可以使用SQLObject。不喜欢Genshi模板?您可以使用Mako甚至是django的,尽管您也不完全被django的默认设置所束缚。
现在是tg2的缺点时间:
  • TG拥有一个更小的社区,而社区通常有其好处。
  • Django有一个更好的名字。我真的很喜欢那个名字;-)
  • Django对于初学者来说似乎更简单,具有相当酷的管理工具。
  • TG有不错的文档,但你还需要去Genshi的网站学习Genshi,去SQL Alchemy的网站学习那个等等。Django有很棒的文档。

我的两分钱。


Django不需要你拥有一个数据库。你可以设置会话、认证等来使用其他后端。只要它们之间没有相关数据,使用N个数据库非常容易,但这很糟糕。 - Vasil
我指的是这个链接:http://code.djangoproject.com/wiki/MultipleDatabaseSupport 现在它是否已经过时或者不完整?关于需要数据库的部分是二手信息,而且是一段时间之前的。我会将其删除。 - Dan
@freelookenstein Django目前仍然没有完整的多数据库支持,尤其是像SQLAlchemy那样的分片等功能。然而,我发现在Django中使用SQLAlchemy比处理TG2/Pylons/Paste生态系统要容易得多。 - AdamKG
哦,而Django的有限多数据库支持不在发布版本(1.0)中。我相信至少其中一部分将在本月稍后的1.1版本中推出。 - AdamKG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接