Django的stream行历史
什么序列的事件使得Django成为最受欢迎的Python Web框架,仍然如此呢? 即使存在其他几个框架。
注 :这个问题既不是争辩也不是对抗 。 我只是要求(客观的)“事件的顺序”,导致它的实际stream行。 意识到软件接受的dynamic ,我不打算任何人进入技术优势的争论。
我认为有几个因素,其组合大于各自的权重总和。
一个是简单的时机:Django出现了正确的轨道,Rails的第一波大规模炒作正在增长,所以它立即被描绘成“Python对Rails的回答”。 这几乎从一开始就导致项目的眼球数量不是很less。 Adrian正在芝加哥举行的“Snakes and Rubies”聚会上参加了关于Rails和Django的并行讨论,这个事实为此付出了很多努力。
另一个因素是,Django始终是一个单一的包安装(不完全是这样:你仍然需要一个数据库适配器,除非你使用Python 2.5+和SQLite,但足够接近)。 非Zope的替代品,所有的注意力都集中在开发者手中留下的组件select上,需要做更多的工作才能达到你可以做基本教程的地步:你需要去寻找一个ORM,一个模板语言等等,并把它们全部安装和configuration好。 尽pipe这些年来情况好多了,但我认为这种记忆仍然存在。
Django从文档中走出来(如果我可以这样说的话)远远超过了开源项目的通常标准,而且随着时间的推移只会变得更好。 本教程针对所有的许多错误,提到了使Django有用的许多高点,其余的文档质量一直很好,根据需要混合了API参考和重要的“如何”位。 这产生了一个很好的开箱即用的体验,并有助于后期的学习曲线(一直困扰着Zope的东西)。
我也认为,无论是对的还是错的,对于那些已经熟悉WSGI和Pythonnetworking生态系统的经验丰富的开发人员来说,Pylons或Werkzeug确实是更好的select; 事实上,他们倾向于把你现有的最喜欢的图书馆并在一起的强有力的select是我认为,这可能会推动一些新的人向Django的综合方法的来源。 另一方面,当然,很多人在尝试Django之前最好先学习一下,不要那样做;)
最后,我认为Django的销售方式有一些东西可以说,也就是说它真的没有很长一段时间的销售,至less在Rails的销售方面并不是这样。 在Django 1.0登陆之前,“市场营销”的工作主要包括人们的博客(还有一些值得注意的事情,人们被要求调低一点),在PyCon上谈话,然后主要是改进框架,用它构build一些很酷的东西并让结果为自己说话。 当然,在1.0之后的世界中,我们有DSF和DjangoCon以及面向业务的顾问进行培训和大量书籍等等,但这些都还是相当新的。
我预计会有反弹,就像Rails一样,实际上我觉得它已经酝酿了一段时间,并且已经开始了。 但是到目前为止,我认为这里列出的因素至less是Django自从最初发布以来一直稳定增长的主要原因。
当Django出现在2005年的时候,许多Python web框架已经存在 – 实际上,当时的笑话已经出现了,Python是“比关键字更多的web框架的语言”(Guido拒绝了我的build议,添加许多,更多的关键字)。 现在“django”本身对于search词来说有点模棱两可(这也是一个受欢迎的吉他手的名字,它的生命启发了伍迪·艾伦的电影等等),但是在search中join了“python”以消除其他的含义你可以在这个图表中看到它的相对stream行度与另一个经典的Python Web框架Zope相比如何变化。 大多数季度都是平稳增长,2008年第二季度初期出现了令人惊讶的惊人增长……这正好与Google发布App Engine的date一致(在这种情况下无法certificate因果关系,但巧合是至less有趣;-)。
App Engine基本上排除了任何深度依赖于定制C编码组件的Python Web框架,或者本质上需要“严重关联”function; 在那些只用纯Python代码运行良好的应用程序中,Django可能是App Engine最直接和最明显的支持。 不过,这只是一个推动,增加了Django潜在的健康增长趋势。 对于这种趋势的解释(实际上App Engine团队和用户决定支持Django的决定)必须存在于Django本身的特性中。
Django有时会受到批评(包括你真正的;-),因为太“神奇”或者“太单一”了,相比于像Pylons,TurboGears,Werkzeug等更轻量级的替代品(尤其是后者) ,我最喜欢的;-),更透明,并允许更轻松地交换进出特定组件(ORM,模板,&C)。 然而,Django的受欢迎程度告诉我们,对于大多数有兴趣开发服务器端网站和应用程序的人来说,这些Djangodeviseselect被认为是正面的:Django被认为是一个非常丰富和完整的框架(它有很多附加组件,并且贡献了“插件”,但这些都是一个后果,而不是它的优势所在)。
易于入门,自动化的“pipe理页面”等等,以及Django 可以致力于制作真正丰富而复杂的网站/应用程序,并且能够满足特殊或独特的要求,具有很多技能和一些工作 -可能是“杀手级的function”。 要最好地使用Werkzeug,您需要了解HTTP和WSGI,并挑选并整合您最喜爱的存储和模板 – 基于Python的网站和应用程序的开发人员(从某种意义上说,Rails的用户或甚至更受欢迎的PHP!)正在“为他们的思想共享投票”,他们不需要这样做的环境,而是主要集中在他们的应用领域。 我不得不承认,他们可能确实有一点;-)。
我可以想到Django受欢迎的三个原因,据我所见,其他答案中只有其中一个已经得到解决:
-
文档。 它的结构合理,全面,可以从多个技能水平上接近。
-
devise。 pipe理员,错误页面和项目站点的可视化devise远远高于大多数开源项目的devise水平。
-
社区支持。 从世界在线的团队开始,Django在早期就find了一些有影响力的传道人。 我不确定你可以说明像杰夫·克罗夫特(Jeff Croft)的非开发者Django(我认为这是标题)这样的博客文章的重要性。
“我个人最喜欢的,而且我期望这将长久以来仍然是一个个人的最爱,是一个名为Django” – Guido Van Rossum在每周第11集的第十一集,于2006年8月4日播出
[点击这里] (听取采访的最后三分之一)
认为这可能有帮助? 或者至lessGoogle为什么select它作为AppEngine的原因?
当然,django社区(包括开发者)正在做很多事情。 例如(一些分析中的链接):
改善模块化: [点击这里]
踢屁股文件点击这里
还有一些关于社区,让人们想要贡献,我还没有把我的手指上: 点击这里
当然,所有导致Django都是exception的: 点击这里
Django的普及是毫无疑问的。
就我而言,我购买了TurboGears的书,并通过其不协调和随意的路线来解释事情。 然后我拿到了Django的书,瞧! 我的第一个付费项目是通过书中样本项目的方式创build的。 这加上在线文件密封了交易。 对我来说,这很简单:文档,文档,文档。
我注意到它经常被提升为Python中的Ruby on Rails等价物。 它也与Google有联系(Google托pipeDjango事件,并在其App Engine中支持)。 一个被Google认可的networking框架必须要有一些东西。 🙂
至less对我而言,一个重要的因素是Simon Willison和Adrian Holovaty在“Web Standards”场景中已经是众所周知的angular色,后来也是Jeff Croft。
这不仅是一个高质量的印章,而且还使得Django非常友好,它尊重HTTP,标记,甚至快速和肮脏的“打印debugging”工作方式,来自PHP的人习惯了。
我可能在这里犯了很多错误,没有数据可以支持,但是我觉得Django从PHP中获得了更多的吸引力,而Rails则从Java / .NET中获得了很多转化。
正如其他人已经指出,文件是高于平均水平。 据我所知,我所见过的最好的。
事实上,有几个高容量的网站已经使用Django(即lawrence.com等),即使是0.96天,也帮助我说服pipe理层使用它是安全的。 像Pylons和Turbogears这样的东西真的没有那个。
至于Django随着时间的stream行(您的问题标题的字面意思,如果不是您真正的问题),看看谷歌的趋势 。