我过去几年一直在使用Turbogears 1原型制作小型网站,但它已经有点过时了。您有什么建议应该升级到Turbogears 2还是转向类似Django的其他框架?我在熟悉的TG社区之间犹豫不决,他们非常负责并且文档写得很好,与使用Django的庞大社区相比。我对内置的CMS功能和Google AppEngine支持非常感兴趣。
请问您有什么建议吗?
我过去几年一直在使用Turbogears 1原型制作小型网站,但它已经有点过时了。您有什么建议应该升级到Turbogears 2还是转向类似Django的其他框架?我在熟悉的TG社区之间犹豫不决,他们非常负责并且文档写得很好,与使用Django的庞大社区相比。我对内置的CMS功能和Google AppEngine支持非常感兴趣。
请问您有什么建议吗?
TG2是基于Pylons构建的,Pylons拥有一个非常庞大的社区。与TG1相比,TG2更快,并且包括了一个按方法(而不仅仅是网页)缓存引擎。我认为它比Django更加友好,因为页面可以轻松地发布为HTML或JSON格式。
2011年更新:在经历了三年臃肿的框架之后,我成为了Bottle的快乐用户。http://bottlepy.org/
我有Django和TG1.1的经验。
在我看来,TurboGears的优点在于它的ORM:SQLAlchemy。当涉及到较为复杂的数据库操作时,我更喜欢使用TurboGears。
Django的ORM并不那么灵活和强大。
尽管如此,我更喜欢Django。如果数据库模式适合Django的ORM,我会选择Django。
根据我的经验,与TurboGears相比,使用Django更加简便。
我现在已经使用Django一年了,当我刚开始使用它时,我对Python或Django没有任何经验,但我发现它非常直观易用。
我使用Django创建了许多业余Google App Engine应用程序,其中最新的一个是我的网站的CMS。使用Django意味着我能够更快地编码,并且出现的错误也更少。
我相信你已经在网上阅读了很多TurboGears和DJango的比较。
但是,对于你对CMS和GAE的诱惑,我真的认为你应该选择DJango。请查看以下内容,并自行决定:
Django ORM使用Active Record实现 - 大多数ORM都使用此实现。基本上,它的意思是数据库中的每一行直接映射到代码中的一个对象,反之亦然。像Django这样的ORM框架不需要预定义模式来使用代码中的属性。您只需使用它们,因为框架可以通过查看数据库模式“理解”结构。此外,您可以将记录保存到数据库中,因为它映射到表中的特定行。
SQLAlchemy使用Data Mapper实现 - 使用此类实现时,数据库结构与对象结构之间存在分离(它们不是Active Record实现中的1:1关系)。在大多数情况下,您必须使用另一个持久性层来与数据库交互(例如,保存对象)。因此,您不能像使用Active Record实现时那样调用save()方法(这是一个缺点),但另一方面,您的代码不必了解数据库中的整个关系结构才能正常运行,因为代码和数据库之间没有直接关系。
那么它们中哪一个赢得了这场战斗呢?没有。这取决于你想要实现什么。我认为,如果你的应用程序主要是CRUD(创建、读取、更新、删除)应用程序,并且没有在不同数据实体之间应用硬性和复杂的规则,那么你应该使用Active Record实现(Django)。它将允许您轻松快速地为您的产品设置MVP,而不会有任何麻烦。如果您的应用程序中有很多“业务规则”和限制,那么您可能更适合使用Data Mapper模型,因为它不会像Active Record一样束缚您并强迫您严格思考。