(免责声明:我是 web2py 的项目负责人)
Django 比 web2py 长了大约 5 年,因此它有更多的用户和更多的应用程序可以炫耀。Django 有他们所谓的“admin”,它与 web2py 的“admin”不同,但更像 web2py 的“appadmin”。Django 的“admin”比 web2py 的“appadmin”更好,更可定制。Django 没有相当于 web2py 的“管理员”。(对不起,名称混淆)。
web2py 更紧凑,具有更多开箱即用的功能(更多支持的数据库、基于 Web 的 IDE、票务系统、无需补丁即可在 GAE 上运行、多种登录方法、基于角色的访问控制、基于 Web 的翻译界面、支持多个数据库连接、分布式事务等)。
对我来说,web2py 最重要的功能是自动迁移。Django 没有开箱即用地提供它们。
对于 web2py 来说,长期向后兼容是一个主要目标,以及安全性。Django 在安全性方面可与 web2py 相媲美(除了 web2py 在模板中具有 CSRF 预防和默认转义),但 Django 在 1.0 发布时破坏了向后兼容性。自 2007 年 10 月以来,web2py 从未这样做过。
对我来说,web2py 语法更自然:
db(db.tablename.fieldname <= value).select() # web2py
Tablename.objects.filter(fieldname__lt=value) # Django
我不知道 Django 中不存在的 web2py 的任何功能。我已经多次问过这个问题,因为如果有的话,我们想将它添加到 web2py,但我还没有得到满意的答案。
当然,有些事情我们都做,但有所不同。Django 遵循“显式优于隐式”。web2py 没有,而是遵循“一切都应该有默认行为”。我相信这会使 web2py 代码和配置更加紧凑。
无论如何,无论您选择什么,它们都是很好的可靠的 Web 框架,并且相似之处少于差异。Django 的开发人员是非常聪明的人。
web2py 社区非常友好。作为一个实验,尝试在 web2py google 组和 Django 组上提问。