2013年11月5日 星期二

[webpy] webpy, django, web2py 的適用性研究

先來研究一下 webpy 、django 及 web2py 的差異。

雖然這三個都自稱 web framework,其中差異卻是很大。

差異的地方在於功能涵蓋率以及如何做到。

我研究的方法是從 hello world 來看它們的做法。

webpy 提到它有以下的功能,而這些都是 web framework 的基本功能:

  1. URL Handling
  2. Web server
  3. Templating
  4. Forms
  5. 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,針對它提供的各大項目進行程式碼編輯。
這些項目包含:

  1. models
  2. controllers
  3. views
  4. languages
  5. modules
  6. static files
  7. 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

 

參考:

http://www.cherrypy.org/

http://webpy.org/

https://www.djangoproject.com/

http://www.web2py.com/

沒有留言:

張貼留言