什么样的事件序列使Django成为最受欢迎的Python Web框架..仍然如此?尽管存在其他几个框架。
注意:这个问题既不论证也不对抗。我只是要求(目标)导致其实际受欢迎的“事件序列”。意识到the dynamics of software acceptance,我并不打算让任何人参与有关技术优势的争论。
答案 0 :(得分:113)
当Django出现在2005年时,许多Python Web框架已经存在 - 事实上,这个笑话已经存在,到那时,Python是“比关键字更多的Web框架的语言”(并且Guido拒绝了我的解决方案)在Py3k中添加了许多,更多的关键字)。现在“django”本身有点含糊不清,作为一个搜索术语(它也是一个流行的吉他手的名字,其生活激发了伍迪艾伦的电影等等),然而在搜索中加入“python”来删除其他含义你可以看到例如在this graph中,与另一个经典的Python Web框架Zope相比,它的相对受欢迎程度如何变化。 2008年第二季度开始时出现了大幅度的惊人增长......这恰好与谷歌宣布App Engine的日期相吻合(在这种情况下不可能证明因果关系,但巧合的是至少有趣; - )。
App Engine基本上排除了任何深度依赖于自定义C编码组件的Python Web框架,或者本质上需要“严重关系”功能;在纯粹的Python代码运行良好的那些中,Django可能是App Engine最直接和明显支持的那个。然而,这只是一个推动力,增加了Django潜在的健康增长趋势。对这种趋势的解释(实际上App Engine团队和用户决定如此支持Django)必须具备Django本身固有的特性。
与Pylons,TurboGears,Werkzeug等替代品相比,Django有时会受到批评(包括......你真的;-)因为“过于神奇”或“过于单一”,而且重量更轻(尤其是后者,我最喜欢的;-),更透明,并允许更容易地交换进出特定组件(ORM,模板和& c)。然而,Django的受欢迎程度告诉我们,对于大多数对开发服务器端网站和应用程序感兴趣的人来说,这些Django设计选择被认为是积极的:Django被视为一个非常丰富且集成良好的框架(它确实有很多添加 - ons并贡献了“插件”,但这些更多的结果而不是其优势的原因。)
易于入门,自动化的“管理页面”等 - 以及Django 可以弯曲以制作真正丰富和复杂的网站/应用程序并适应特殊或独特的事实具有很多技能和一些工作的要求可能是“杀手锏”。要最好地使用Werkzeug,您需要了解HTTP和WSGI,并选择和集成您最喜欢的存储和模板 - 基于Python的网站和应用程序的开发人员(例如,在某种意义上,Rails的用户或者甚至更受欢迎的PHP! - )“在他们的思想共享中投票”,他们不一定要做任何这样的环境,但可以主要关注他们的应用领域。我将不得不承认他们可能有一点意见; - )。
答案 1 :(得分:108)
我认为有一些因素,其组合大于各自权重的总和。
一个是简单的计时:Django出现正确,因为Rails炒作的第一波大潮正在加速,所以它立刻被描绘成“Python对Rails的回答”。这几乎从一开始就导致项目中的眼球数量微不足道。 Adrian在芝加哥参加“Snakes and Rubies”聚会并参加了关于Rails和Django的并排谈话,这一事实为此做了很多。
另一个因素是Django一直是单包安装(好吧,不完全:你仍然需要一个数据库适配器,除非你使用的是Python 2.5+并使用SQLite,但足够接近)。非Zope的替代品,都集中在开发人员手中留下组件选择,需要更多的工作才能达到你可以做一个基本教程的地步:你需要去寻找一个ORM,一个模板语言等等,让他们全部安装和配置。虽然这些年来情况好多了,但我认为这种挥之不去的记忆仍有影响。
Django带着文档走出大门(如果我可以这样说的话)远远高于开源项目的通常标准,并且随着时间的推移只会变得更好。本教程针对其中的许多错误,点击了许多使Django变得有用的高点,文档的其余部分始终具有良好的质量,根据需要混合API参考和重要的“如何”位。这产生了良好的开箱即用体验,并有助于教学后的学习曲线(一直困扰着Zope的东西)。
我还认为有一种看法 - 无论是对还是错 - 对于那些已经了解WSGI和Python网络生态系统的经验丰富的开发人员而言,Pylons或Werkzeug确实更好。事实上,他们倾向于选择现有的最喜欢的图书馆并将它们插在一起,这是我的想法的源泉,并且可能会推动一些新人对Django的综合方法。当然,另一方面是很多人在尝试使用Django之前更好地学习更多东西并不这样做;)
最后,我认为对于Django的销售方式有一些说法,也就是说它真的不是长期推销,或者至少不是比方说,Rails上市了。在Django 1.0登陆之前,“营销”的努力主要包括人们的博客(并且有一些值得注意的事件,人们被要求稍微调整一下),在PyCon上进行谈话,然后主要是改进框架,用它来构建很酷的东西并让结果说明一切。当然,现在,在1.0之后的世界里,我们有DSF和DjangoCon以及面向商业的顾问,他们正在进行培训课程和大量书籍以及其他所有书籍,但这一切都还很新。
我希望会有反弹,就像Rails一样,事实上我认为它已经酝酿了一段时间并且已经开始了。但到目前为止,我认为我在这里列出的因素至少是Django自首次发布以来人气持续稳定增长背后的主要原因。
答案 2 :(得分:22)
我可以想到Django受欢迎程度的三个原因,据我所知,其他答案中只有一个已得到解决:
文档。它具有良好的结构,全面,并且可以从多种技能水平进行操作。
设计。管理员,错误页面和项目站点的可视化设计远远高于大多数开源项目所见的设计水平。
社区支持。从世界在线的团队开始,Django早期就找到了一些有影响力的福音传教士。我不确定你是否可以过分陈述像Jeff Croft的Django for Non Developers等博客文章的重要性(我认为这是标题)。
答案 3 :(得分:13)
“我个人最喜欢的,我希望这长久以来仍然是个人的最爱,就像Django” - Guido Van Rossum在FLOSS每周第11集播出,2006年8月4日播出
[Click Here](听听面试的最后三分之一)
认为这可能有所帮助?或者至少谷歌为AppEngine选择它的原因是什么?
当然,django社区(包括开发者)正在做很多事情。例如(链接中的一些分析):改善模块化: [Click Here]
踢屁股文件 Click Here
社区也有一些让人们想要贡献的东西,我还没有指出: Click Here
当然,所有这些导致Django成为异常值: Click Here
Django的受欢迎程度毫无疑问。
答案 4 :(得分:3)
在我的情况下,我买了TurboGears的书,并且在解释事情时遇到了不一致和随意的路线。 然后我拿到了Django书,瞧!我的第一个付费项目是在完成本书中的示例项目时创建的。加上在线文档加盖了这笔交易。 对我来说,这很简单:文档,文档,文档。
答案 5 :(得分:2)
我注意到它经常被提升为Python中的Ruby on Rails。它还与谷歌有联系(谷歌主持Django活动,并在他们的App Engine中支持它)。由Google支持的网络框架必须具备一定的价值。 :)
答案 6 :(得分:2)
至少在我看来,一个重要的因素是Simon Willison和Adrian Holovaty在“Web标准”场景中已经是众所周知的玩家,以及后来的Jeff Croft。
这不仅是一个高质量的印章,而且还使Django非常适合网络,尊重HTTP,标记,甚至快速和脏,“打印调试”的工作方式,来自PHP的人使用至。
我可能在这里严重错误,没有数据支持这一点,但我觉得Django从来自PHP的人那里获得了更多的牵引力,而不是从Java / .NET获得大量转换的Rails。 / p>
正如其他人已经指出的那样,文档高于平均水平。据我所知,我见过的最好的。
答案 7 :(得分:0)
有几个大量网站已经在使用Django(即lawrence.com等等) - 即使是0.96天 - 这一事实帮助我说服管理层使用它是安全的。像Pylons和Turbogears这样的东西真的没有。
答案 8 :(得分:-1)
至于Django随着时间的流行(你的问题标题的字面意思,如果不是你的实际问题),请看看google trend。