2009-06-04 59 views
4

我正在尋找一種LAMPish/WAMPish體驗。Python web框架的入門門檻低

東西很透明。編寫腳本,按F5並查看結果。很少,如果有抽象的話。 SQLAlchemy和(也許)一些簡單的模板引擎將被使用。

我需要簡單的訪問環境 - 類似於PHP的方式。像COOKIE,SESSION,POST,GET對象。

我不想寫一箇中間件層來讓一些web服務正常運行。我不想處理CGI的細節。

這並不意味着一個非常複雜的項目,它適用於開始程序員和/或開始Python程序員。

一個MVC框架不是不可能的。 ASP.NET MVC很好地完成了IMO。我喜歡的一件事是,如果需要,POST數據會自動轉換爲數據模型對象。

你能幫我一下嗎?

謝謝! PS:我在舊帖子中沒有找到符合這些標準的任何內容。

+0

「我不想只寫一箇中間件層讓一些網絡服務正常運行,而我不想處理CGI的細節問題。「我不確定如何解釋:使用中間件(即Web框架)來避免CGI的細節。 「中間件」是什麼意思?你能給個例子嗎? – 2009-06-04 09:56:27

+1

我不想處理我的應用程序和Web服務器之間的接口。它應該只是工作。在看過「werkzeug」的情況下,我想我會提到它。也許我對「中間件」這個詞的選擇是錯誤的。 – user51710 2009-06-04 11:28:33

+0

「它應該只是工作」並不意味着太多。有一個界面。有人必須編寫通過該接口交換數據的代碼。我沒有真正明白這個問題 - 仍然 - 你能提供一些符合你的「正常工作」標準的細節或示例代碼嗎? – 2009-06-04 17:16:08

回答

5

對於進入門檻低,web.py是非常非常輕和簡單。

特點:

  • 容易(開發)部署... web.py文件夾複製到您的應用程序目錄,然後啓動服務器
  • 正則表達式爲基礎的URL映射
  • 非常簡單的類映射
  • 內置服務器(大多數框架當然有這個)
  • 非常薄(至少通過代碼行測量)python應用程序代碼層。

這裏是它的的Hello World

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() 

雖然我很喜歡WERKZEUG概念,在你好,世界書寫WSGI管道!是非常不愉快的,完全妨礙了實際演示應用程序的方式。

也就是說,web.py是不完美的,而對於大的工作,它可能不是正確的工具,因爲:

  • 路線風格的系統(恕我直言)比純更好的正則表達式的人
  • 將web.py與其他中間件集成可能是冒險的
1

看:

  • WSGI,HTTP服務器的標準Python API調用Python代碼。
  • Django,流行的,功能豐富的,有據可查的Python的Web框架
  • web.py,最小的Python Web框架
+3

我會投票了網絡。如果它是在一個單獨的評論。我不想對Django投票,Django根本不容易部署,或者進入門檻低。 – 2009-08-12 16:42:06

1

你調查過Django Web框架?它是一個用python編寫的MVC框架,並且設置和入門相對簡單。你可以用python運行它,因爲它可以使用SQLite和它自己的開發服務器,或者你可以設置它來使用MySQL和Apache,如果你願意的話。

Pylons是另一個支持模型SQLAlchemy的框架。我從來沒有用過它,但看起來很有希望。

6

CherryPy可能是你需要的。它透明地將URL映射到Python函數,並處理所有的cookie和會話內容(當然還有你的POST/GET參數)。

這不是像Django或Rails這樣的全棧解決方案。另一方面,這意味着它不會讓你使用模板引擎或者你不喜歡的ORM;你可以隨意使用你喜歡的任何東西。

它包含一個WSGI兼容的Web服務器,所以你甚至不需要Apache。

5

你所描述的最類似Pylons,在我看來。但是,/爲Python Web框架的數量是巨大的 - 看到this page的企圖,並列出非常簡要地描述他們的每一個 - !)

0

退房web2py。它沒有配置即可使用,甚至可以使用USB存儲棒。模板語言是純Python,您可以通過瀏覽器編輯器開發您的整個應用程序(儘管我發現vim速度更快;)

1

別忘了Bottle。這是一個單一文件的微型網頁框架,沒有依賴性,使用起來非常簡單。下面是一個「Hello World」的例子:

from bottle import route, run 
@route('/') 
def index(): 
    return 'Hello World!' 
run(host='localhost', port=8080) 

這裏訪問POST變量的例子(cookie和GET瓦爾相似)

from bottle import route, request 
@route('/submit', method='POST') 
def submit(): 
    name = request.POST.get('name', 'World') 
    return 'Hello %s!' % name