【问题标题】:Python Web Framework for Small Team [closed]小型团队的 Python Web 框架 [关闭]
【发布时间】:2011-09-06 14:59:44
【问题描述】:

我有 4 天的假期,我将利用这段时间在 python web 框架中重写我们的 RoR(Ruby on Rails)应用程序,只是为了好玩;-](为什么不进行切换,RoR 很棒,但要不断改变所有时间,可能会很累。)

我不太了解 python web 框架,我很高兴 web.py、django、cherry.py、pylons/pyramid 和其他一些。我们的要求是(把一切都可以无关紧要):

  • MVC(严格与否)
  • 小团队(2-3人,包括一名设计师)
  • 有趣的使用
  • REST 支持
  • 多级缓存(数据库查询、页面缓存)
  • Nginx 支持(X-Accel-Redirect 文件下载)
  • 高流量(1,200,000 ~ 浏览量)
  • 网址重写(多域不只支持子域)
  • 如果不是炒作也不是问题
  • 没有插件也没问题
  • SQL 或 NOSQL(尝试 NOSQL 会很有趣)

那你有什么建议呢?

【问题讨论】:

    标签: python django pylons cherrypy


    【解决方案1】:

    我会推荐 DJANGO 或 TurboGears。

    【讨论】:

    • 这不是投票,而是答案。为什么推荐 Django 或 Turbo Gears?
    【解决方案2】:

    我认为大多数大型框架都可以满足您的要求,所以也许您可以从您正在编写的应用程序的角度来看待它。您想“开箱即用”工作多少。您需要用户管理吗?您需要管理面板等吗?

    我使用 Django,当您不想重写大量样板时,它非常棒。有时试图弯曲它来做你想做的事情可能有点乏味,但是一旦你了解它的复杂性,你就可以很快完成工作。

    无论如何使用 Django:

    【讨论】:

      【解决方案3】:

      我认为任何主要的 Web 框架都不会出错。就我个人而言,我最常使用 Django,并且会倾向于这种方式,ORM 真的很棒,而且它的理念/设计与我自己的个人喜好密切相关。但是,如果您想走不同的路线,bottle 是一个非常有趣的轻量级微框架,我发现使用它进行开发是一种乐趣。如果你想走 NoSQL 路线,MongoDB 有很好的 Python 支持。 PyMongo 非常棒(也是从 Python 中使用 MongoDB 的推荐方法),MongoEngine 是一个不错的小 ORM(如果你喜欢那种东西的话)。

      【讨论】:

        【解决方案4】:

        在您提到的框架中,来自 Rails 背景的 Django 最有动力,并且最有可能符合您对框架的理想。我的意思是它有帮助你快速生成表单的助手,尽管没有脚手架。 (事实上​​,Django 的方式比 Rails 中的脚手架好一点,因为你可以使用它的全部或部分)

        它有一个很好的 ORM 和许多辅助方法,并且最好的特性之一是,一旦你定义了你的模型,它就有一个功能齐全的管理界面。即使网站正在开发中,您也可以开始移植数据。

        它还提供出色的用户支持,包括权限、访问控制、组、用户配置文件。

        创建自己的中间件和上下文处理器很容易(也很有趣),让您可以将经常重复使用的部分抽象为框架的插件。

        您在上面指定的 Django 唯一没有的功能是 NoSQL 支持。而这只是对了一半。如果您想为应用程序的某些部分(例如会话存储)使用非关系数据库,您可以。如果您想将其用作您的专属后端,您将失去 Django 的一些很棒的功能,除非您使用 django-nonrel 修补 Django。

        我使用了涡轮齿轮,它是您提到的其他几个选项的组合。该社区中有一些很棒的人,但他们目前正在经历一次重大的架构改造,老实说,他们并没有像 Django 那样得到开发人员的关注。

        【讨论】:

          【解决方案5】:

          除了提到的其他框架(这些都是不错的选择),您应该查看web2py。它是一个功能丰富的全栈框架,非常易于设置、学习和使用。它最初受到 Ruby on Rails 的启发,因此如果您正在重写 RoR 应用程序,您可能会发现它比其他一些 Python 框架更舒适。以下是有关您的要求的一些详细信息:

          该框架处于非常活跃的开发阶段(每 2-4 周发布一次新版本),但仍致力于保持向后兼容性,因此现有应用不会在升级时中断。如果您有任何问题,可以从友好且响应迅速的mailing list 那里获得很多帮助。

          【讨论】: