Python Web Framework——Bottle
看到一个介绍Bottle的文章,觉得很有意思,所以到处搜罗了一些有意思的东西,总结如下。
在浅谈五大Python Web框架(http://www.cnblogs.com/babykick/archive/2011/11/28/2265920.html)中介绍了几种Python的Web框架,然后又看了一下Web框架比拼测评(http://www.cichui.com/the-great-web-framework-shootout/),觉得Bottle和Flask很有意思,所以想了解一下。
从下面的示例代码看看,你会喜欢哪一种呢?
web.py
import web urls = ( '/(.*)', 'hello' ) app = web.application(urls, globals()) class hello: def GET(self, name): if not name: name = 'World' return 'Hello, ' + name + '!' if __name__ == "__main__": app.run()
Flask,
from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" if __name__ == "__main__": app.run()
Bottle,
from bottle import route, run @route('/:name') def index(name='World'): return '<b>Hello %s!</b>' % name run(host='localhost', port=8080)
所以我就选了Bottle了,其他的Django这种大的框架没有考虑在内,其他语言的也没有考虑在内。
顺便也了解了一下Web Framework和MVC到底是什么东西。
Web FrameWork 和 MVC
现在Web开发有各种技术,各种语言,各种框架。所谓框架,我的理解,就是一个通用的架构,这个架构把重复的工作,或者不变的工作解决,让开发人员集中在其他方面。现在好像说到Web框架,就会说到MVC。
(MVC详解:了解真正所谓的"框架" http://cjwxd126715.iteye.com/blog/349678)
MVC,Model-View-Control,因为Web上的应用越来越复杂,会有各种数据,会有各种页面显示,在最开始,用HTML写页面显示,涉及到交互数据,改变页面显示之类的时候,有Javacript或者Java代码等,嵌入到HTML中,后台也会有各种代码,处理数据,控制页面显示,这使得Web程序结构混乱。于是就希望使得Web开发更有逻辑,结构更清楚,有了MVC。数据,用Model来保存,View只控制与显示相关,Control,具体的处理数据。MVC中关于View的原意,“View里面只应该存在和显示有关的逻辑,而不应该存在任何其它的逻辑——比如访问数据库,调用业务逻辑之类”。
所有的MVC框架中,View部分做到了“只和显示逻辑相关” 吗?View能够脱离数据部分单独存在吗?不管是用JSP,Velocity,还是用TagLib,View都必须知道自己所使用的Object的数据结构,必须访问这些Object的各种属性,才能把它们显示出来。这个View和Model分开了吗?能分开吗?(MVC的迷思 http://www.iteye.com/topic/6284)
(IoVC,一种新的编程思想 http://www.iteye.com/topic/176066)
IoVC希望通过美工设计在View里面给每个组件设置一个ID,然后程序员在后台逻辑业务中可以通过ID对view中页面元素有完全的控制力。Web页面在美工完成之后,程序员再也无需因为需求的变更或者逻辑的变化,而再重新维护 Web页面内容。这个也很有意思的。