【问题标题】:Django for web2py developers面向 web2py 开发人员的 Django
【发布时间】:2009-12-10 02:21:50
【问题描述】:

现在我已经对 web2py 比较熟悉了,我想试试 Django。

主要区别是什么?

考虑到 web2py 知识,最有效的入门方法是什么? (一定有一些python应用框架知识吧?)

编辑

另外,如果您同时使用了这两种方法,您能否提供您更喜欢的意见以及为什么?

【问题讨论】:

  • 我相信你应该首先确保你了解 Python。 Web2py 不能像普通的 Python 代码那样工作——全局命名空间是一团糟,很多东西都是隐式导入的,很难将 web2py 的内部代码称为 pythonic 并且有时你会碰壁(例如,如果您按照教程的建议在db.py 中定义db 数据库,则可以在models.py 和例如people.py 中访问全局db 变量,但不能在contacts.py 中访问)。只需再次学习正确地构建代码,而不是 web2py 的工作方式,而是 Django 代码的工作方式。

标签: django web2py


【解决方案1】:

web2py 深受 Django 的启发,如果你知道其中一个,就很容易学习另一个。我们添加了一些在 Django 中没有的功能,包括:数据库迁移(自动更改表)、错误票证、基于 Web 的 IDE、可在 Google App Engine 上运行的数据库抽象层、可插入登录的基于角色的访问控制机制模块。

一个基本的设计差异是,在 Django 中,应用程序是作为模块实现的,因此您需要在编辑它们时重新启动服务器。而在 web2py 中,Models/Views/Controllers 不是模块,它们由框架执行(不导入),因此当它们发生变化时您不需要重新启动服务器。

另一个区别是 Django 使用 ORM,web2py 使用 DAL。 DAL 的级别略低于 Django ORM,这使得它更接近 SQL 语法(例如,允许左连接、任意聚合、嵌套选择及其组合),同时保持可移植性(我们支持 10 个不同的数据库)。 DAL 还可以轻松地对模型进行动态元编程(例如在运行时根据存储在 XML 或 CSV 文件等文件中的规范创建模型)。

Django 存在的时间更长,因此您会发现更多熟练使用它的人并部署了更多应用程序。

【讨论】:

  • 更改代码时无需重新启动 Django 服务器 (djangoproject.com/weblog/2005/jul/20/autoreload)。自 2005 年年中以来,这似乎就是事实。
  • 如果您使用 Django 服务器则不可以,但是 - 如果我没记错的话 - 如果您使用 Apache+mod_wsgi 或 mod_python 运行 Django,则需要重新启动 Apache。在 web2py 中,即使您不使用内置的,也无需重新启动 Web 服务器。
  • 不需要重启Apache,重新加载mod_wsgi或者fcgi即可。
  • @mdipierro:您指的是 DAL 优于 ORM。然而,我担心向表示数据库中记录的结构添加自定义方法的能力。有可能吗,例如。将close() 方法添加到代表db.shops 表的单个记录的类/对象中?因此,如果我有代表单个商店的 shop 对象,我可以调用 shop.close() 并且它会执行在 Django 的情况下我可以放入与此特定模型关联的单个方法中的所有逻辑?
【解决方案2】:

Django = 老

Web2py = 新

无论 Django 做什么,web2py 都做得更好。这是因为 web2py 是在 django 之后很久才制作的,并且从 Django 的错误中吸取了教训,尽管它犯了所有新错误;)

主要区别,以及让我留在 web2py 中的原因:

  1. Django 有令人难以置信的文档...web2py 非常直观,它不需要那么多...但是!我发现 Django 文档适用于 web2py,因为大部分。如果您花一天时间阅读 django 书(第 1-7 章),您就会明白这是怎么回事。所以在某种程度上,说 Django 有更好的文档是愚蠢的。另外,请注意,任何框架都在谈论它的文档量是一件好事......请注意......文档是好的,不需要任何以 = 更好的开头。 Web2py 现有的文档足以满足 90% 的用户的需求。剩下的 10% 得去看看框架库代码(没有 Django 那么多,也没有那么吓人)。此外,如果您花费超过 30% 的时间来处理库代码,那么是时候摆脱框架并转向库集合(例如 pylons)了。在这一点上,这意味着您没有做任何 Web 框架旨在处理的事情......

  2. Django 中的 SQLForm 是 TextModel。使用 TextModel (=SQLForm) 创建表单后。祝您尝试更改单个输入字段的 CSS 好运!在 web2py 中,您只需执行 form.element(),在 Django 中没有这样的事情。你必须通过“widget()”,但要进入小部件,你必须先通过输入字段类型等...

  3. 另外,手动数据库迁移...更改架构?抱歉...必须下载并安装单独的迁移应用程序(South),或者必须在您的数据库控制台中手动完成。

  4. 最后,没有对多个 DB 的开箱即用支持...想一想...

换句话说......与Django......希望你喜欢跳跃和篮球。

如果你真的想从 web2py 中跃跃欲试,试试 Pylons……说真的……

web2py 的最大缺点是它的年龄和较小的代码库......但这并不是不合理的,考虑到 Django 就像第一个实现 RAILS 样式 RAD 思想的 Python Web 框架,并且是 web2py 的两倍。 Web2py 仍处于其生命周期的早期采用者阶段……Django 正处于超越临界质量的部分,即将衰落……我预测,web2py 应该在未来 2 年内的任何一天达到临界质量。

结论 花一天时间,阅读 django 书(第 1-7 章),阅读 Pylons 书(第 1 部分),然后想想你为什么要开始使用框架。对我来说,这是尽可能快地完成工作,并且 30% 的时间都无需查找文档。

Web2py 满足了我以上的需求。

【讨论】:

    【解决方案3】:

    我完全在 Django 中制作了一个小型内部网络应用程序,然后完全在 web2py 中。这是真正了解差异及其对开发人员体验的影响的唯一方法。

    我更喜欢 web2py,因为环境中内置了比 Django 提供的更多便利,但 web2py 比 Django 更新得多,而且事后诸葛亮总是让新实现变得更好。由于 web2py 保证了向后兼容性,因此某些新工具使 web2py 在几年后过时是完全合理的。这是正常的事情。

    无论如何,它们彼此非常接近,与两者中的任何一个相比,它们都比任何其他 Web 框架都更接近。例如,从基于 Java 的 Web 框架的角度来看,它们可能看起来几乎相同。

    【讨论】:

    • 好点,+1。但是,当您尝试在两个框架中做一些更高级、更定制的事情时,真正的 差异是显而易见的。我相信你会看到 Django 优于 Web2Py,因为你很清楚你的应用程序中发生了什么,Web2Py 的所有功能都是,或者可以很容易地在 Django 中实现。有一些区别,比如 Django 中缺少基于 Web 的 IDE(可能有一个模块),但至少 Django 可以被各种 IDE 正确解释,并且高度可定制和稳定。
    • @Tadeck:关于我使用 web2py 的经验,我成功发布了网站,非常清楚我的应用程序中发生了什么,不需要重新实现功能,在 IDE 中使用 web2py 就可以了(PyDev Eclipse ),贡献了代码到主干,体验了完美的稳定性(web2py 保证向前兼容!),为 web2py 书做出贡献,并且通常享受与友好社区的互动。我相信 Django 也可以实现所有这些事情。只是说。
    【解决方案4】:

    了解一些python框架绝对有帮助。

    最有效的入门方法是比较两者的不同部分,即模型、视图、控制器、Url 调度、模板、表单等。

    Here 是少数几个框架的一个很好的比较。相信它会有所帮助。

    【讨论】:

    • 链接失效了。您能找到您所指的资源并更新链接吗?那会很好。谢谢。
    【解决方案5】:

    在开始使用 web2py 之前,我是一名 Django 程序员。我发现自己使用 web2py 效率更高,这可能是因为明智的默认设置(隐式导入、默认视图等)和 forum 的大力支持。

    【讨论】:

      猜你喜欢
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      • 2019-07-17
      • 1970-01-01
      • 1970-01-01
      • 2010-11-09
      • 2010-09-24
      • 2010-10-05
      相关资源
      最近更新 更多