2011-10-02 95 views
2

我已經使用這個簡單的腳本運行的Web服務器的Python運行在瀏覽器中的.py文件 -如何使用python web服務器

from http.server import SimpleHTTPRequestHandler as RH 
    from socketserver import TCPServer 

    ServerName='localhost' 
    OnPort=8000 
    print ("Server is running at Port 8000") 
    TCPServer((ServerName, OnPort), RH).serve_forever() 

它運行良好,運行我的index.html文件,但它不能運行。在瀏覽器PY文件當我鍵入 - http://localhost:8000/myfile.py

它只是表明我的Python代碼,因爲它是我在寫文件,它不執行代碼,請幫助我通過運行在瀏覽器我的Python文件(的.py)只使用這個網絡服務器,我不想使用任何框架或其他網絡服務器。

有什麼辦法可以在這個python服務器上創建一個虛擬主機,比如apache。如果可能的話請建議我如何做到這一點,以及任何配置文件需要配置或不。

感謝名單...

回答

2

的問題是,SimpleHTTPRequestHandler僅提供文件從一個目錄,它不執行它們。如果您希望它執行代碼,則必須覆蓋do_GET方法。

+0

演示如何覆蓋do_GET方法....... – mohit

+0

如果您不知道如何在Python中重寫某個方法,則應該閱讀教程。 –

2

您可能想要檢出CGIHTTPRequestHandler。我在基於Linux的系統上非常簡單地使用它,CGI標準是要使文件可執行並且具有正確的shabang。我不知道這是否會在Windows上工作,但(如果這是連一個相關的擔憂)

與您的示例代碼,你只需要RH改變

import CGIHTTPServer.CGIHTTPRequestHandler as RH 

或者第三方庫扭曲有一個大多爲純Python邏輯的.rpy文件的概念。 http://twistedmatrix.com/trac/wiki/TwistedWeb

注意: 只是驗證CGIHTTPRequestHandler的作品。注意事項是所有的python文件必須位於cgi-bin子目錄中,它們必須有一個有效的shabang,必須是可執行的,並且必須提供有效的CGI輸出。

個人寫過C++ CGI在90年代腳本,CGI的路線似乎是路徑maddness ...所以檢查出扭曲的,CherryPy的,或者Django的(這三個主要覆蓋的可能性Python的Web譜)

+0

添加到我的推薦列表。 Flask是我每天使用的Web庫/工具,用於製作簡單的Web應用程序。我會建議檢查一下。 – David