Python 的 Web 框架适用性研究
先来研究一下webpy 、django 及 web2py 的差异。
虽然这三个都自称 web framework 但其中差异却是很大。
差异的地方在于功能涵盖率以及如何做到。
我研究的方法是从 hello world 来看它们的做法。
webpy 提到它有以下的功能,而这些都是 web framework 的基本功能:
- URL Handling
- Web server
- Templating
- Forms
- Database
而 django、web2py 的网站第一句话就说,「high-level Python Web framework」(django)、「full-stack framework」(web2py)。因此相较之下,webpy 显得是比较手工(轻量级)的framework。这怎么说呢?
首先,webpy 最简单的范例是:
import web
urls = (
'/', 'index'
)
class index:
def GET(self):
return "Hello, world!"
if __name__ == "__main__":
app = web.application(urls, globals())
app.run()
执行这段程式
python code.py
# 或指定 Port 如 8080
python code.py 8080
之后就可以用 browser 来看执行结果。其他的事情,就自己手工来写。
web2py 在安装完之后,直接执行 web2py。进到预设网页(http://127.0.0.1:8000) 在它的预设网页先设定管理者密码,再建立一个 Application,例如 myapp。 之后再进入 http://127.0.0.1:8000/myapp 的 edit mode,针对它提供的各大项目进行程式码编辑。
这些项目包含:
- models
- controllers
- views
- languages
- modules
- static files
- plugins
以最简单的 hello world 来说,就是在属于 controller 的 default.py 里,写下
def index():
return "Hello from MyApp"
如此浏览 http://127.0.0.1:8000/myapp/default/index 就会看见 hello world 了。
django 在安装完后(这是一条漫长的道路),要建立网站架构,使用指令
django-admin.py startproject mysite
它会在你的工作目录产生一个结构:
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
然后再依照 django 规定修改新增相关档案,启动开发用 server,就可以看到结果。
由一个 hello world 范例,就可以看出这三个 web framework 的目标族群是不一样的。 webpy 的确是简单。若是只有几页网页要展示,没有复杂权限控管需要实作(例如与桌机整合的 single sign on),对于开发小型网站程式是很好的。不用装一大包东西只为了几种单纯的网页。 可以这样思考,若是装 apache 都嫌太大的专案,就可以思考用 webpy。类似的 framework 如 www.cherrypy.org。然而是要完整功能,则免不了要自己打造很多功能。选用别的 framework 比较合适。 而 django、web2py,已经有相关许多模组做出权限控管,许多类型档案支持,session 的支持等等。
这里粗略的比较只是为了找出各个 web framework 适不适合自己所用的方案而已。同样都说是 framework,轻量级跟重量级可是差别很大。
我目前只要小小的 framework。
参考:
- http://www.cherrypy.org/
- http://webpy.org/
- https://www.djangoproject.com/
- http://www.web2py.com/