很大程度上,web开发的模式演进路线和桌面UI的演进历史惊人的重合:最开始,CGI拼字符串;对应桌面程序的console界面时代。后来web开发开始MVC化,也基本上是借鉴桌面GUI开发时的数据库封装(Model),布局文件(View),业务逻辑(Control)。后来web开发越来越注重用户的实时交互,从而变得富JavaScript化。个人感觉和桌面GUI库中的callback化很类似。
web开发以后的趋势应该是“控件化”,前后端的界限会变得模糊,可能会出现一套包含前后端的控件库。比如一个登陆框,会抽象成一个类,里面包含了各种参数化的界面,动画,后端数据库映射,异常处理等等。感觉RoR(Ruby on Rails)就有点这种发展趋势。
Python的web框架是非常非常之多的,这说明用Python开发web应用是非常流行的,但这也说明了一个可悲的问题:Python不像Ruby那样有一个Rails似的一统天下的框架,我也经常被初学者问起Python web开发哪家强之类的问题。
Python Web框架一览:
但平时工作和技术交流过程中我们发现,常用的Python web开发框架还是比较固定的。
这里我分两大类讲
· 大而全的框架
o Django,这个应该是现在Python界名气最大的开发框架了,真正的全功能。有个小tips,Django这个单词,D是不发音的,所以这个单子发音大概是“坚狗”,不是“帝坚狗”。Django在实际的大型网站项目中应用的也是比较少的,也是由于“样样行,样样都不精”。但值得一提的是Django里面有个django-admin 模块,可以用这个模块快速的开发出界面很炫酷的系统,一个朋友在这个模块上深度开发了一个项目,可以供大家参考学习:sshwsfc/django-xadmin · GitHub
§ 官网
The Web framework for perfectionists with deadlines
§ Hello World
稍微有点复杂,要配置route等。详情请见:Django documentation
o web2py,这个框架由于Django的出现,现在逐渐式微了。
· 轻量级框架
o web.py,这个框架是个有故事的框架。它的作者是天才Aaron Swartz,这个也是曾经最为流行的 Python轻量级web框架,但由于2013年作者自杀身亡后就基本停止更新了,现在用的人也逐渐变少了。
我认为还是有必要介绍一下它的作者,一个我很崇拜的人:
有一部关于他的纪录片,《互联网之子》《The Internet‘s Own Boy: The Story of AaronSwartz》 (2014)。地址: 互联网之子 (豆瓣)
2013年1月11日,美国程序员、作家、政治活动组织者、互联网活动家Aaron H. Swartz在纽约自杀身亡,享年26岁。
Swartz出生于1986年,在14岁时,就已经加入W3C RDF核心工作组。在麻省理工学院,他与Web发明人Tim Berners-Lee一起工作,并协助开发并传播了Web上数据共享的标准,他与其他人联合写就了目前广泛使用的RSS 1.0规范。他是markdown的联合创始人,还是知名社会化新闻站点Reddit的三个拥有者之一,他还创造了python web应用框架web.py。
Swartz曾在Stanford读过一年,然后主动退学,创立公司Infogami,该公司受到Y Combinator首次SummerFounders Program资助。
2007年,他领导非盈利组织Open Library的创立,该组织意将世界上所有曾经出版过的书的信息都收集起来。
此后,Swartz在哈佛道德中心实验室(Harvard‘s Ethics Center Lab)完成了一个研究生奖学金,研究制度腐败(InstutionalCorruption)。在2010年,他创建了http://DemandProgress.org,发起运动“反抗互联网审查法案SOPA/PIPA”。
2011年7月,美国联邦大陪审团起诉Swartz,罪名是他从JSTOR在线杂志档案系统上下载了海量学术性文档,并大量散发。此后,他为Avaaz基金会工作,这是一家非盈利性组织,致力于“全球web运动,将人民群众的力量带入到政府决策过程中”。
o Flask,中文的意思是“烧瓶”。首先,我们需要明确一个概念,“轻量级”不代表功能简陋,而是设计思想。一切MVC组件都是可替换的。其默认 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2。正因为良好的扩展性,Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。然而,Flask保留了扩增的弹性,可以用 Flask-extension加入这些功能:ORM、窗体验证工具、文件上传、各种开放式身份验证技术。
§ 官网
Welcome | Flask(A Python Microframework)
§ 安装
pip installFlask
§ Hello World
from flask import Flaskapp = Flask(__name__) @app.route("/")def hello(): return "Hello World!" if __name__ == "__main__": app.run()
o Bottle,中文的意思是“瓶子”。这个框架和Flask十分的的相似,相似到很多场景下把import Flask 直接改为 import bottle就能直接切换框架。但这连个框架的设计思想相差很多:
Flask倾向于用已有的开源框架来“拼凑”出一个完整的框架,例如Werkzeug、Jinja2。避免重复造轮子;而Bottle的作者似乎比较坚持,自己写的东西才有更好的可控性,作者也对“单文件” 的实现十分的坚持。
我个人比较喜欢Flask的方式,Flask也的确展示出了极强的可变行,如果你想将默认的模版引擎从Jinja2替换成Mako,你甚至都不用引入任何其它的扩展。
◆著作权归作者所有◆
商业转载请联系作者获得授权,非商业转载请注明出处。
原文链接:http://zhuanlan.zhihu.com/auxten/20171274
==========================================
课程详情点击:http://www.51reboot.com/course/devops/
报名QQ:979950755(小夏) 279312229(ada)
>>更多技术交流,请加群:238757010