[webpy] webpy, django, web2py 的適用性研究
先來研究一下 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 // 或者 python code.py 1234 以指定 port
之後就可以用 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 如 http://www.cherrypy.org/。然而是要完整功能,則免不了要自己打造很多功能。選用別的 framework 比較合適。
而 django、web2py,已經有相關許多模組做出權限控管,許多類型檔案支援,session 的支援等等。
這裡粗略的比較只是為了找出各個 web framework 適不適合自己所用的專案而已。 同樣都說是 framework,輕量級跟重量級可是差很多的。
我目前只要小小的 framework。
:p
參考:
https://www.djangoproject.com/