2012-06-29 68 views
3

之前我使用mod_python python網站。不幸的是,mod_python不是最新的,所以我尋找另一個框架,並找到mod_wsgi。python網頁mod_wsgi

在mod_python中有可能有一個索引方法和其他方法。我想有多個頁面將被調用。 事情是這樣的:

def application(environ, start_response): 
    status = '200 OK' 
    output = 'Hello World!' 

    response_headers = [('Content-type', 'text/plain'), 
         ('Content-Length', str(len(output)))] 
    start_response(status, response_headers) 

    return [output] 

def test(environ, start_response): 
    status = '200 OK' 
    output = 'Hello test!' 

    response_headers = [('Content-type', 'text/plain'), 
         ('Content-Length', str(len(output)))] 
    start_response(status, response_headers) 

    return [output] 

那是可能的mod_wsgi的?

SOLUTION: 燒瓶框架做什麼,我需要

#!/usr/bin/python 
from flask import Flask 
from flask import request 
app = Flask(__name__) 
app.debug = True 
@app.route("/") 
def index(): 
    return "Hello index" 

@app.route("/about")#, methods=['POST', 'GET']) 
def about(): 
    content = "Hello about!!" 
    return content 

if __name__ == "__main__": 
    app.run() 
+0

當然這是可能的。你如何看待所有這些使用mod_wsgi的Python框架? –

+0

你有沒有例子?我找到的所有教程都只是印刷「Hello World!」例。 – user1408786

+1

不要嘗試寫入原始mod_wsgi。使用框架 - 或者像Flask這樣的小框架,或者像Django一樣的全棧框架。然後,您將獲得適當的URL路由到儘可能多的功能,只要你喜歡。 –

回答

4

WSGI是一個普遍的切入點的webapps,這麼說,你爲什麼只找到的Hello World,同時尋找mod_wsgi的原因就是你'正在尋找mod_wsgi,而不是實現標準的框架。

看到它,wsgi有點像洋蔥。網絡服務器將請求發送給您的可調用對象。有2個參數:environstart_response。據我可以告訴start_response,是將發送您的標題的函數和environ是所有參數存儲的地方。

你可以滾動你自己的框架或使用像金字塔,燒瓶等。每個框架都可以綁定到wsgi。

然後創建一個wsgi中間件來處理請求。然後,您可以解析「PATH_INFO」來製作不同的可調用對象。

def my_index(environ): 
    response_headers = [('Content-type', 'text/plain')] 
    return response_headers, environ['PATH_INFO'] 

def application(env, st): 
    response = None 
    data = None 
    if environ['PATH_INFO'] == '/index': 
     response, data = my_index(environ) 

    st('200 ok', response) 

    return [data] 

這是一個相當簡單的例子,但隨着環境,你可以做任何你想做的事情。本身,wsgi並沒有使用mod_python。它實際上只是一個用於web服務器的python界面。

編輯

至於對方說的意見,不要試圖推出自己的,如果你沒有,你在做什麼的想法。考慮使用其他框架並首先了解更多信息。

例如,您需要編寫一個將函數綁定到url的正確方法。正如我在我的例子中寫的那樣很糟糕,但應該知道它是如何在後臺完成的。你可以使用正則表達式來處理請求來提取id或者使用類似於遍歷金字塔和zope的東西。

如果你真的堅持自己推出,看看webob教程。

http://docs.webob.org/en/latest/do-it-yourself.html

+0

謝謝,我會嘗試一個框架。我幾乎開始自己創建一個。但是一個框架會爲我節省很多時間。 – user1408786