Django是我最喜欢的python web框架。我尝试过其他像pylons,web2py,nevow等人。
但我从来没有热情地看过TurboGears。
现在TG2没有测试版,我可以尝试一下。我想知道与Django相比有哪些优点和缺点。
答案 0 :(得分:15)
TG2有几个我认为很重要的优点:
还有更多,但我认为知道Django比TG2有一些优势也很重要:
所有这一切都意味着开始使用Django比使用TG2更容易,但我个人认为你获得的额外功能和灵活性是值得的。但是你的需求可能总是不同的。
答案 1 :(得分:14)
TG2接受Pylons并更改一些默认值 - 对象分派而不是Routes,而Genshi则代替Mako。他们相信there's only one way to do it,因此应用可以依赖于任何TurboGears网站的相同API。
Django使用自己的处理程序进行HTTP,路由,模板和持久化。 Django还拥有出色的文档和成熟的社区。 p>
TurboGears默认使用最佳的库,显然是Paste,对象分派,Genshi和SqlAlchemy。这种理念产生了一个更好的全方位工具集,但存在不稳定的风险 - 因为这意味着如果出现更好的库,就会失去向后兼容性。
答案 2 :(得分:5)
赞成。
缺点。 - 管理员更基本(没有内联对象!) - 减少第三方应用程序 - “app”系统仍在制作中。 - 鉴于它的模块化,你需要阅读不同来源的文档(SQLAlchemy,Genshi或Mako,repoze.who,Pylons等)
答案 3 :(得分:2)
几个月前我一直在努力解决同样的问题并决定 Turbogears 2 ,我的理由很简单。 “我是python的新手,我想学习它不仅仅是针对网络项目,而是作为脚本小帮手编写的PHP的替代”
我不喜欢Django,对我来说看起来像是一个“关闭平台”。 ORM,模板系统,会话等都是Django的
另一方面,Turbogears 2使用已知的开放平台并粘贴它们,就像Appfuse为Java做的那样
使用TurboGears 2,我学习了SQLAlchemy,我可以在以后用于小型python脚本,或者从python shell中解决常见任务。
主要缺点是缺乏完整的文档和错误消息。
有时你必须深入搜索才能找到简单的解决方案,学习曲线陡峭,但它需要长期支付。错误消息让我感到非常困惑(来自Java开发的超过10年)。当真正的问题是没有导入模块时,我已经失去了很多时间试图找到“ascii编码错误”。
这是我的观点,只记得我是python的新手,我对这里陈述的很多事情都错了。
答案 4 :(得分:1)
除了Nikhil在他的回答中提供的内容之外,我认为另一个小的区别是Turbogears对javascript小部件和与Mochikit的集成提供了一些支持。
而Django坚持不懈地保持javascript框架中立。
(至少对于旧版本的Turbogears来说也是如此......这可能会因TG2而改变)
编辑:我刚刚查看了TG2文档,发现确实发生了变化。 Turbogears现在使用ToscaWidgets,它可以在下面使用jQuery,ExtJS,Dojo等。这很好地使它更加框架中立,同时仍然提供了不错的javascript小部件。
如果您没有任何javascript经验,那么对于Turbogears来说,这会让我感到非常强烈。 pro 如果您正在编写大量专门的JavaScript,那么Django的专业会让我感到震惊。< / p>
答案 5 :(得分:1)
最重要的问题之一不仅是该平台提供的技术功能或平台提供的技术功能,还包括开源项目的驱动理念以及支持它的社区的性质。
我自己在这场斗争中没有狗,但我发现Mark Ramm's talk at DjangoCon 2008在这一点上非常有趣(毫无疑问,谷歌将不会结束随后的讨论)。
答案 6 :(得分:0)
因为Django使用自己的ORM,所以限制您学习该特定Web框架的ORM。我认为使用具有更流行的ORM的Web框架(如TG使用的SqlAlchemy)会增加您的就业机会。只差我2美分..
答案 7 :(得分:0)
最后我查了一下,django的数据实现非常糟糕。这是我书中的一个巨大弱点。 Django的orm不允许我使用底层数据库的强大功能。例如,我不能使用复合主键,这对良好的数据库设计很重要。它也不支持多个数据库,这在你真正需要它之前并不是什么大问题,并且发现如果不采取手动操作就无法做到这一点。最后,如果您必须以团队友好的方式更改数据库结构,则必须尝试在一组第三方迁移工具之间进行选择。
Turbogears似乎在结构上更具声音,尽最大努力整合本身非常棒的个人工具。而且因为TG更像是一个集成商,所以你可以根据自己的喜好来切换件。不喜欢SQL Alchemy?您可以使用SQLObject。不喜欢Genshi模板?你可以使用Mako甚至django's,尽管你并没有完全坚持django的默认设置。
时间tg2的缺点:
我的2美分。