Django -vs- Grails -vs-?

时间:2008-09-16 19:05:49

标签: python django frameworks

我想知道是否有类似Django的简易Web应用程序开发与良好的部署,调试和其他工具相结合?

Django是一个非常高效的框架,用于构建内容繁重的网站;与一些Java怪物相比,我尝试过的最好的和新鲜空气。然而,它是用Python编写的,这意味着在部署/打包,调试,分析器和其他工具方面几乎没有真正的支持,这使得构建和维护应用程序变得更加容易。

Ruby有类似的问题,虽然我比Ruby更喜欢Ruby 很多,但我得到的印象是,在管理/支持应用程序时,Rails与Django大致相同。

有没有人在这里尝试过Django和Grails(或其他网页框架)的非平凡项目?他们是如何比较的?

9 个答案:

答案 0 :(得分:30)

你问过一个同时使用Grails和Django的人。我已经完成了大项目的工作。这是我的想法:

<强> IDE的: Django在Eclipse中工作得很好,Grails在IntelliJ Idea中工作得非常好。

<强>调试: 几乎相同(假设您使用IntelliJ for Grails,Eclipse使用Python)。步骤调试,检查变量等......永远不需要打印语句。有时django错误消息可能没用,但Grails错误消息通常很冗长,很难解析。

运行单元测试的时间: django:2秒。 Grails:20秒(测试本身都在几分之一秒内完成,这是关于加载框架以运行它们的部分,其余部分......正如你所看到的,Grails的加载速度令人沮丧)。

<强>部署: Django:复制&amp;将一个文件粘贴到apache配置中,然后重新部署,只需更改代码并重新加载apache即可。 Grails:创建.war文件,将其部署在tomcat上,冲洗并重复以重新部署。

编程语言 Groovy非常棒。我喜欢它,比Python更受欢迎。但我当然没有抱怨。

<强>插件: Grails:许多破碎的插件(并且可以使用每个java lib)。 Django:一些稳定的插件,但足以完成你需要的大部分工作。

<强>数据库: Django:使用South的模式迁移,以及通常直观的关系。 Grails:没有模式迁移,默认情况下它会在启动时删除数据库... WTF

<强>用法: Django:初创公司(特别是在Gov 2.0领域),独立的网络开发商店。 Grails:企业

希望有所帮助!

答案 1 :(得分:10)

  

然而,它是用Python编写的   意味着没有真正的支持   部署/包装的方式,   调试,分析器和其他工具   这使得建筑和维护   应用程序更容易。

Python有:

  1. 一个great interactive debugger,它很好地利用了Python REPL
  2. easy_install anv virtualenv用于依赖关系管理,打包和部署。
  3. profiling features与其他语言相比
  4. 所以恕我直言,你不应该担心这些事情,使用Python和Django并幸福地生活: - )

    幸运的是,Django runs on Jython的最新版本,所以你不需要抛弃整个Java生态系统。

    谈到框架,我今年进行了评估:

    1. Pylons(Python)
    2. webpy(Python)
    3. Symfony(PHP)
    4. CakePHP(PHP)
    5. 这些框架都没有接近Django或Ruby on Rails的强大功能。根据我的同事意见,我可以推荐你kohana框架。缺点是,它是用PHP编写的,据我所知,PHP没有出色的工具来调试,分析和打包应用程序。

      编辑:这是一个非常好的article about packaging and deployment of Python apps(特别是Django应用)。这是Django社区的一个热门话题。

答案 2 :(得分:10)

Grails的。

Grails看起来像Rails(Ruby),但它使用比java更简单的groovy。它使用java技术,你可以毫无困难地使用任何java lib。

我也选择Grails而不是简单,并且有很多java lib(例如jasper report,jawr等),我很高兴现在他们加入了SpringSource,这使得他们的基础扎实。

答案 3 :(得分:10)

grails在启动时删除数据库的声明是完全错误的。它在启动时的行为是完全可配置的,易于配置。我通常在开发模式下运行应用程序时使用create-drop。我在测试和生产中运行时使用更新。

我也喜欢使用Grails中的环境预先配置测试用户,数据等的引导处理。

我很想看到有人真正建立并部署了一些商业项目,评论其优缺点。是一个非常有趣的读物。

答案 4 :(得分:3)

我有两个朋友最初开始使用Ruby on Rails编写应用程序,但遇到了许多问题和限制。经过大约8周的研究,他们决定调查其他替代方案。

他们选择了Catalyst Framework和Perl。那是大约4个月前的事了,他们一再谈到应用程序的进展程度,以及它们的灵活性。

使用Perl,您可以使用所有CPAN,以及包含的大量工具。我建议至少看看它。

答案 5 :(得分:3)

对于Python来说,“良好部署”问题并不具备Java的深层意义。

Django的Python部署基本上是“移动文件”。如果需要,您可以直接从subversion主目录运行。

使用Python distutils可以毫不费力地构建自己的分发工具包,将Django应用程序放入Python的站点包中。我不是它的忠实粉丝,但它真的很容易做到。

由于我的东西在Linux中运行,我有简单的“install.py”脚本,可以将Subversion目录中的东西移到/opt/this/opt/that目录中。我在Apache配置中使用显式路径设置来命名应用程序所在的目录。

可以通过编辑文件来完成修补。 (一个糟糕的政策。)我更喜欢在SVN位置编辑并重新运行我的小安装,以确保我确实控制了所有文件。

答案 6 :(得分:1)

cakephp.org

Cakephp非常好,非常靠近轨道上的红宝石(1.2)。它在PHP中,在共享主机上运行良好,易于实现。

唯一的缺点是文档有点缺乏,但你很快就会得到它,并迅速开始做很酷的事情。

我完全推荐cakephp。

答案 7 :(得分:1)

我个人用Django制作了一些相当大的项目,但我只能比较所谓的“montrosities”(Spring,EJB)和真正的低级别的东西,比如Twisted。

使用解释语言的Web框架大多处于初期阶段,并且所有这些(积极维护,即每天)都在变得越来越好。

答案 8 :(得分:1)

通过“良好部署”,您是否将其与Java的EAR文件进行比较,这些文件允许您通过将单个文件上载到J2EE服务器来部署Web应用程序? (并且,在较小程度上,WAR文件; EAR文件可以具有依赖项目的WAR文件)

我认为Django或Rails还没有达到这一点,但我可能错了...... zuber指出了一篇关于Python方面的更多细节的文章。

Capistrano可以帮助Ruby方面。

不幸的是,我还没有真正使用Python或Ruby,所以我无法帮助分析器或调试器。