面向初学者的Django vs web2py [关闭]


83

这两个框架中的哪个更适合具有11个月经验的开发人员。我决定学习python进行服务器端编码,并想知道其中哪一个更适合我的技能水平的人。我刚刚花了几天时间在玩web2py并非常喜欢它,我想知道Django是否提供了我错过的更多功能?

PS。更新:谢谢大家的精彩输入,在购买了三本django书籍并经历了django和web2py的一些小型项目/教程之后,我选择了web2py。这是一个很棒的框架,对于新手来说,Web开发真的很有趣。我建议所有新手学习此框架,因为它将在将来成为主流。Django也是一个很棒的框架,但以我有限的经验来看,web2py更好。



1
“ Web2py使您可以专注于开发应用程序,而Django则不然。它希望您做所有的事情。” 是的,听起来像是一个很公正的比较
user240515

不要选择选择报价来支持您的陈述。这篇文章还不错。
阿什利2012年

我想我找到了一个针对web2py的新手的教程:Killer Web Development
Colin Keenan 2012年

1
'如果您曾经使用过Django ...整个过程都是基于继承的。当他们介绍[CBV]时,它变得如此复杂,以至于有人不得不为了浏览继承树而不得不创建此站点:ccbv.co.uk' - news.ycombinator.com / item ? id=7994281 vs'另一个缺点是,因为模型和控制器不是基于类的,有效的代码重用变得更加困难,尤其是由于无法从父控制器继承……意味着必须在所有控制器文件中重复引用通用控制器功能。- en.wikipedia.org/wiki/Web2py
mistermarko

Answers:


107

(免责声明:我是web2py的项目负责人)

Django比web2py长5年左右,因此它有更多的用户和更多的应用程序可以炫耀。Django具有他们所谓的“ admin”,它与web2py的“ admin”不同,而更像web2py的“ appadmin”。与web2py的“ appadmin”相比,Django的“ admin”更好,更可自定义。Django没有等效于web2py的“ admin”。(对不起,名称混乱)。

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组上提问。


1
谢谢,这是一些好东西。我正在通过Django教程对其进行测试,因此web2py语法绝对更自然。希望以后我会有更清晰的了解,但是到目前为止,这两个框架看起来都非常不错。
RubyGladiator

11
+1(我非常感谢web2py允许您在视图中直接编写python)
doug

1
对于您提供的web2py示例,我有一个问题(“ db(db.tablename.fieldname <= value).select()”),因为它看起来不像Python(括号内的部分不是将值赋给参数之一,而只是传递True/ False)。它是web2py的标准还是您提供的代码只是现实生活中web2py代码的简化版本?也许括号中的部分应该用引号引起来?请解释。
塔德克2012年

在db(...)。select()中,...不是True / False值。db.tablename.fieldname <= value是一个表达式,在每个记录上的计算结果为true或false。这是实际的web2py代码。没有引号。
马西莫

4
web2py DAL仅提供一种编写查询的方法。查询将用SQL转换并发送到数据库,该数据库返回响应。web2py不受数据库中有多少记录的影响,并且不在乎。换句话说,如果我写“ db(db.tablename.fieldname <= value).select()”,web2py将不会检索所有记录并评估每个记录的条件。如果要在数据库中查询“ SELECT * FROM TABLENAME WHERE FIELDNAME ='1'”。
Massimo'3

23

Django和web2py都是出色的“全栈” Web框架,具有相似的特性和功能-对于任何一个框架,您都不会像初学者那样“错过”。

如果不了解更多关于学习的知识,很难回答您的问题。有人会说学习框架而不是语言存在危险,因此最好先更深入地了解Python语言和重量较轻的框架(例如Flaskwekzeug)。

话虽这么说,但web2py的初始学习曲线比Django低,因为它专门设计为学习工具。所以我想说您做了一个不错的选择。绝不会浪费任何学习资源,如果您决定以后再需要其他东西,那么使用web2py学到的好技术也不会浪费。

尽管Django有更多的学习资源,但由于存在时间更长且拥有更多用户,因此学习web2py的速度也很快,这是因为该书非常出色,并且几乎可以立即回答用户组中的问题

如果您正在寻找工作,那么还有更多的Django工作,所以这可能是一个因素。话虽如此,web2py社区最近建立了expert4solutions,您可以在此将来提高自己的技能和可用性。

玩得开心!


谢谢Knitatoms,我实际上学习了ruby,我正在学习Python,到目前为止,这似乎非常相似。关于我想对框架进行的操作,这将是在不久的将来纯粹建立一个Web初创公司。我也想使用jquerymobile构建一些东西,因为我一直在玩它。
RubyGladiator

2
有趣的是-我处于相似的位置,并且因为我将为自己工作,因此选择了自己的框架,因此我选择了web2py,到目前为止我很高兴。
keybits 2010年

10

我对Web2py和DJango都是一个完整的菜鸟,但是我想要一个可以使用pythonic的Web框架,学习并创建一个简单数据库的前端。我查看了web2py,但是找不到针对完整的新手的不错的教程,当我确实安装了web2py时,这非常简单,我不知道下一步该怎么做,似乎没有指导我的教程。如何构建一个简单的Web应用程序(不仅是hello world)。另一方面,DJango确实编写了您的第一个DJango App Part 1。这确实很棒,向新手介绍了如何通过编写简单的Web应用程序来设置和使用框架。在Web2Py提供此功能之前,我的投票权投给了DJango。


通过观看以下视频,我完全不了解Python或数据库,从而学习了Web2py:youtube.com/… 之后不久,我使用Web2py为大型企业和用户群构建了两个生产Web服务。非常感谢Google网上论坛社区!
主动

6

用很多话来说:(据我了解)

Web2py绝对容易,并且使代码更简单,更清晰。但是Django使您对正在发生的事情有了更好的了解,并且还拥有修改设计/过程的更多功能。

Web2py更加注重“简单胜于复杂”,但是Django更加注重“显式胜于隐式”。Python Zen的两个部分,因此很难说哪个框架更像Python。


9
实际上,有时我会发现Web2Py相对相反,复杂-这与“复杂胜于复杂”背道而驰。向后兼容性,重复的名称,各种文件的隐式执行,遍布各处的全局变量-所有这些问题导致Python框架与Python的哲学背道而驰。
塔德克2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.