Django 是我最喜欢的 Python Web 框架。我已经尝试过其他的,如 pylons、web2py、nevow 等。
但我从来没有对 TurboGears 充满热情。
现在 TG2 测试版结束了,我可以试一试。我想知道与 Django 相比有哪些优缺点。
Django 是我最喜欢的 Python Web 框架。我已经尝试过其他的,如 pylons、web2py、nevow 等。
但我从来没有对 TurboGears 充满热情。
现在 TG2 测试版结束了,我可以试一试。我想知道与 Django 相比有哪些优缺点。
TG2 有几个我认为很重要的优点:
还有更多,但我认为知道 Django 比 TG2 有一些优势也很重要:
所有这一切意味着 Django 比 TG2 更容易入门,但我个人认为您获得的额外功能和灵活性是值得的。但是您的需求可能总是不同的。
TG2 采用 Pylons 并更改了一些默认值 - 对象调度而不是 Routes,Genshi 而不是 Mako。他们相信只有一种方法可以做到这一点,因此应用程序可以依赖于任何 TurboGears 网站的相同 API。
Django 使用自己的处理程序来处理 HTTP、路由、模板和持久性。Django 还拥有出色的文档和成熟的社区。
TurboGears 默认使用同类最佳库,显然是Paste、对象调度、Genshi和SqlAlchemy。这种理念产生了一个更好的全能工具集,但存在不稳定的风险——因为这意味着如果出现更好的库,就会放弃向后兼容性。
优点。
缺点。- 管理员更基本(还没有内联对象!) - 更少的第三方应用程序 - “应用程序”系统仍在制作中。- 考虑到它的模块化,您需要从不同来源(SQLAlchemy、Genshi 或 Mako、repoze.who、Pylons 等)阅读文档
几个月前,我在同一个问题上苦苦挣扎,并决定使用Turbogears 2,我的推理很简单。“我是 python 新手,我想学习它不仅是为了 web 项目,而且是为了替代 php 来编写小助手的脚本”
我不喜欢 Django 的地方,在我看来就像一个“封闭平台”。ORM、模板系统、会话等它们都是 Django 的
另一方面,Turbogears 2 使用已知的开放平台并将它们粘合起来,就像Appfuse为 Java所做的那样
通过 TurboGears 2,我学习了 SQLAlchemy,以后可以将其用于小型 Python 脚本,或者从 Python shell 中解决常见任务。
主要缺点是缺乏完整的文档和错误消息。
有时您必须非常深入地搜索才能找到简单的解决方案,学习曲线很陡峭,但从长远来看是值得的。让我非常困惑的错误消息(来自 10 多年的 Java 开发)。当真正的问题是未导入模块时,我花了很多时间试图找到“ascii 编码错误”。
这是我的观点,请记住我是 python 新手,我可能对这里所说的很多事情都错了。
除了 Nikhil 在他的回答中给出的内容之外,我认为另一个小区别是 Turbogears 提供了对 javascript 小部件和与Mochikit集成的一些支持。
而 Django 坚定地保持 javascript 框架中立。
(至少对于旧版本的 Turbogears 是这样的……这可能在 TG2 中有所改变)
编辑:我刚刚浏览了 TG2 文档,发现它确实发生了变化。Turbogears 现在使用 ToscaWidgets,它可以在下面使用 jQuery、ExtJS、Dojo 等。这很好地使它更加框架中立,同时仍然提供漂亮的 javascript 小部件。
如果你没有任何 javascript 经验,这让我觉得我是Turbogears的专业人士,如果你正在编写很多专门的 javascript,我觉得这是 Django 的专业人士。
最重要的问题之一不仅是该平台提供或该平台提供了哪些技术功能,还在于开源项目的驱动理念和支持它的社区的性质。
我自己在这场斗争中没有狗,但我发现Mark Ramm 在 2008 年 DjangoCon 上的演讲在这一点上非常有趣(毫无疑问,Google 将产生无止境的后续讨论)。
因为 Django 使用它自己的 ORM,所以它限制了您学习该特定 Web 框架的 ORM。我认为使用具有更流行的 ORM 的 Web 框架(例如 TG 使用的 SqlAlchemy)会增加您的就业机会。只是我的2美分..
最后我检查了一下,django 的数据实现很差。这是我书中的一个巨大弱点。Django 的 orm 不允许我使用底层数据库的功能。例如,我不能使用复合主键,这对良好的数据库设计很重要。它也不支持多个数据库,这没什么大不了的,直到您真正需要它并发现如果不求助于手动操作就无法做到这一点。最后,如果您必须以团队友好的方式更改数据库结构,您必须尝试在一组 3rd 方迁移工具之间进行选择。
Turbogears 似乎在架构上更合理,尽最大努力集成本身就很棒的各个工具。由于 TG 更像是一个集成器,您可以根据自己的喜好切换部件。不喜欢 SQL 炼金术?您可以使用 SQLObject。不喜欢 Genshi 模板?您可以使用 Mako 甚至 django,尽管您也没有完全坚持使用 django 的默认设置。
tg2 的缺点时间:
我的 2 美分。