Django vs web2py初学者开发

2024-04-27 00:07:15 发布

您现在位置:Python中文网/ 问答频道 /正文

这两个框架中哪一个更适合有11个月经验的开发人员。我已经决定学习python用于我的服务器端编码,并且想知道哪一个更适合我这个技能级别的人。我刚刚花了几天时间和web2py打交道,非常喜欢它,我想知道Django是否提供了一些我错过的东西?

补充:谢谢大家的宝贵意见,在购买了三本django的书,并为django和web2py做了一些小项目/教程之后,我已经决定使用web2py。这是一个很棒的框架,它使web开发对新手来说非常有趣。我建议所有新手学习这个框架,因为它将成为未来的主流。Django也是一个很棒的框架,但在我有限的经验看来web2py更好。


Tags: 项目django框架web编码开发人员技能服务器端
3条回答

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

Django比web2py要长5年左右,因此它有更多的用户和应用程序可以展示。Django有一个他们称之为“管理”的东西,它与web2py的“管理”不同,但更像web2py的“appadmin”。Django的“admin”比web2py的“appadmin”更好、更可定制。Django没有web2py的“admin”等价物。(很抱歉名字混淆了)。

web2py更加紧凑,具有更多现成的功能(更受支持的数据库、基于web的IDE、票务系统、在GAE上运行而无需补丁、多种登录方法、基于角色的访问控制、基于web的翻译接口、支持多个数据库连接、分布式事务等)。

对我来说,web2py最重要的功能是自动迁移。Django不会提供现成的。

对于web2py来说,长期的向后兼容性和安全性是主要目标。在安全性方面,Django与web2py是相当的(除了web2py之前在模板中有CSRF保护和默认转义),但是Django在1.0发布时中断了向后兼容性。web2py从2007年10月开始就没有了。

对我来说,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组问一个问题。

我完全不懂Web2py和DJango,但是我想要一个pythonic的web框架来玩、学习和创建一个简单数据库的前端。我看了web2py,但找不到任何像样的教程,目标是完全的新手,当我得到web2py安装,这是非常容易的,我不知道下一步怎么做,似乎没有教程指导我如何建立一个简单的web应用程序,(不只是hello world)。另一方面,DJango做了Writing your first DJango App Part 1。这真的很好,给新手介绍了如何通过编写一个简单的web应用程序来设置和使用框架。在Web2Py提供这个之前,我的选票投给了DJango。

Django和web2py都是优秀的“全栈”web框架,具有相似的特性和功能——作为一个使用这两种框架的初学者,您不会“错过”太多。

如果不知道你想用你的学习做什么,很难回答你的问题。有人会说,学习框架而不是语言是有危险的,因此最好先对Python语言和轻量级框架(例如Flaskwekzeug)有更深入的了解。

尽管如此,web2py的初始学习曲线比Django要低,因为它是specifically designed as a learning tool。所以我认为你做了一个很好的选择。任何学习都不会被浪费,如果你决定在未来需要其他东西,那么使用web2py学习的好技术也不会被浪费。

尽管Django有更多的学习资源,因为它的存在时间更长,用户也更多,但学习web2py也很快,因为它有优秀的book和对user group问题几乎即时的响应。

如果你想找一份工作,有更多的Django工作,所以这可能是一个因素。尽管如此,web2py社区最近已经建立了experts4solutions,在那里你可以在未来提升你的技能和可用性。

玩得开心!

相关问题 更多 >