【问题标题】:What web framework to choose [closed]选择什么网络框架[关闭]
【发布时间】:2011-07-14 10:59:57
【问题描述】:

我来自 java world (apache wicket),需要在我的项目中使用 python。

我听说过Turbogear2Pyramid(Pylons) 或Django,并阅读了一些关于它们的信息。 我的第一选择是建立在 Pylons 之上的 TurboGears2,工具已经打包,但是 也许有人可以提供一些建议。

我不需要像 wiki 或博客那样创建大量内容,而是代表和 允许访问我的数据库中的一些对象,然后构建一个 javascript 接口 处理这些数据。

我需要网络框架来为我做什么:

  • 具有角色(管理员、用户、组...)的身份验证系统
  • 在应用程序外部使用增强的 javascript 工具,例如 dojo,但是 如果我可以在应用程序和 javascript 库之间共享组件,那就太好了。
  • easy AJAX : 组件必须刷新'onChange'(我不喜欢提交按钮)
  • 一个好的ORM。不知道SQLAlchemy,但看起来不错,将对象映射到/从数据库、数据库池......
  • 易于部署(来自 java 我认为没问题;))
  • 轻松添加 css 或 js 到页面
  • 一个不会让我紧张的框架 ;)
  • 良好的文档和/或良好的支持

  • 线程/多进程支持(有很多计算。其中一些占用大量内存,另一些占用 处理时间。所以我希望能够从应用程序中启动程序。但我认为更多的是关于using a python library 和这个问题无关? )

谢谢

【问题讨论】:

  • 所有框架都这样做。除了您已经完成的工作之外,我们无法提供太多额外的帮助。我们能做的最好的事情就是为你掷硬币。头。

标签: python django pylons pyramid turbogears2


【解决方案1】:

对我自己来说,Pyramid 中的 mako + sqlalchemy 是达成交易的关键。如果你从事一些体面的数据库工作,SqlAlchemy 是最好的选择。我也是 mako 模板的忠实粉丝。在 mako 本身中创建可重用的表示类型函数的能力与尝试在您最终尝试导入的 Python 模块中执行操作的能力在我的书中是一个加分项。

我真正想说的是,对于您的最后一项,您应该真正考虑通过使用消息队列和Celery 之类的方式将这些内容提供给外部工作人员来完成工作并更多地使用网络应用程序提交/结果显示,而不是实际尝试将工作从您的 Web 应用程序中拆分出来。

【讨论】:

  • 虽然我没有反对 SqlAlchemy(它肯定享有庞大的用户群),但我认为说 “它是最好的合作伙伴” 真的更多个人意见大于事实。一方面,我更喜欢 Canonical 的 Storm,它的作用不大……炼金术!它的工作更加透明,它更轻、更快,并且让您可以更好地控制您的数据库。 (我并没有声称它绝对更好,我只是声称它与 SqlAlchemy 不同,并且 - 对于 my 的大部分工作 - 它是比 SqlAlchemy 更好的解决方案。 ..
  • 当然,但是在使用了 Django ORM 之后,由于我是 Ubuntu 的忠实粉丝,所以在使用 Storm 并检查了一些启动板的代码库之后,我发现 SqlAlchemy 是最适合使用的。它分解为原始 sql 比其他的要慢得多,当您尝试编写与后端无关的应用程序时,这有点胜利。
【解决方案2】:

正如 S.Lott 在他的评论中指出的那样,您的要求并没有给出明确的“赢家”,因为至少 大多数 框架都具有这种能力。

IMO 是 Python Web 框架分歧较大的三个维度:

  • 接近“pythonic”的概念
  • 亮度
  • 开销

通常较轻的框架将:需要更多的开销并采用更 Python 的方法(webpy、cherrypy...),而较重的框架(django、turbogear...)可以让您的应用在几分钟内启动并运行,但会以某种方式迫使你以某种(合乎逻辑但不一定是 Python 的)方式来塑造你的代码。

也就是说,我相信您的回答有 95% 取决于个人喜好。

HTH!

【讨论】:

    【解决方案3】:

    除了你提到的框架,你一定要看看web2py。我认为您会发现它是最容易设置、学习和使用的工具之一,特别是考虑到它提供的广泛功能。一个如果它的primary goals 是为了不“破坏你的神经”。它包括一个优秀的authentication system;集成Javascript/AJAX 支持(另见components);一个快速而强大的database abstraction layerweb services; automatic RESTful API generation;很棒documentation;和一个非常有帮助且反应迅速的mailing list。开发非常活跃,至少每个月都会发布新版本(不会破坏向后兼容性)。这是最近的presentation

    【讨论】:

      【解决方案4】:

      一篇评论文章...

      我喜欢 Pylons(现在被 Pyramid 取代)的特性以及 Django 框架对新举措的广泛支持(尽管它不热衷于重新发明这么多* - 尤其是 MVC)。

      我喜欢 Web2py 中的数据抽象层,它可以部署到 Google 的 AppEngine。这是我做出决定的一个关键特征。 Web2py 受到 RoR 的启发,有些人可能会推卸责任,但我对此表示赞赏,并且到目前为止还没有阻碍任何开发路径。

      最后尝试了几个框架,我使用了 Web2py(使用 offical book 作为参考)。 great community 响应速度非常快。

      【讨论】: