什麼是有效的方法(最好是簡單的)與遠程服務器進行通信,並允許用戶與其交互(IE提交命令,用戶界面)通過Web瀏覽器(IE是輸入命令的文本框,用於輸出的文本區域,還是各種無命令抽象接口)? python交互式網頁數據/窗體/界面與遠程服務器通信
我有'獨立'python代碼完成通信和工作(終端/控制檯現在)。我主要關心的是將代碼重新包含到網絡套件中,包括建立連接(python套接字)以及在用戶登錄時維護連接。
一些進一步的細節:目前使用的基本後端/模板Django框架
- 。
什麼是有效的方法(最好是簡單的)與遠程服務器進行通信,並允許用戶與其交互(IE提交命令,用戶界面)通過Web瀏覽器(IE是輸入命令的文本框,用於輸出的文本區域,還是各種無命令抽象接口)? python交互式網頁數據/窗體/界面與遠程服務器通信
我有'獨立'python代碼完成通信和工作(終端/控制檯現在)。我主要關心的是將代碼重新包含到網絡套件中,包括建立連接(python套接字)以及在用戶登錄時維護連接。
一些進一步的細節:目前使用的基本後端/模板Django框架
如果您使用django並希望前端(瀏覽器中的html)與服務器交談,那麼您應該很容易適應AJAX。
可能是最有效的將是建立REST作爲fmsf說。在一般情況下,每個命令將對應於與其他變量的URL連接:
http://example.com/nuclear_warhead/activate/1
http://example.com/nuclear_warhead/activate/2
http://example.com/nuclear_warhead/activate/3
http://example.com/nuclear_warhead/position/1/AtlanticOcean
http://example.com/nuclear_warhead/position/2/NorthPole
http://example.com/nuclear_warhead/position/3/Moon
http://example.com/nuclear_warhead/launch/1
http://example.com/nuclear_warhead/launch/2
http://example.com/nuclear_warhead/launch/3
你既可以有這些作爲客戶端操作(他們點擊一個鏈接或提交表單)或Ajax調用。對於Ajax調用,它們填寫一個複雜的表單,表單將其格式化爲具有附加數據的可接受的URL,並將其發送到服務器。一旦服務器處理這些命令,它就會返回一個結果(通常是XML或JSON格式),該結果由瀏覽器解析並顯示在頁面上。
在一個完整的基於REST的應用,您需要使用POST的不同的HTTP方法,GET,PUT和DELETE來處理記錄
http://example.com/secret_document/1 [POST]
- 創建 http://example.com/secret_document/1 [PUT]
文檔 - 更新 http://example.com/secret_document/1 [GET]
文件 - 檢索文檔 http://example.com/secret_document/1 [DELETE]
- 刪除文檔
但是,並非所有瀏覽器都支持所有的HTTP方法。
在實現方面,Django是一個選項,但是對於你要找的東西有點重量級。您可能需要查看this article,其中詳細描述瞭如何設置輕量級應用程序來響應Web客戶端請求。您絕對可以擴展它以添加更多功能。
對於複雜的網址,你想看看一個URL調度員,它可以解析URL像 '/ nuclear_warhead /位置/ 1/AtlanticOcean' 並調用 'position_nuclear_warhead(彈頭= 1,位置= '大西洋')' – 2010-04-15 20:00:54
weberror.pdbcapture有一些瘋狂的代碼可以通過網絡進行一般的交互。它被實現爲WSGI中間件,它基本上監聽任何人在sys.stdin上請求輸入,當這種情況發生時,它開始從Web表單獲取輸入並將輸出發送回同一頁面。你可能不想直接使用它,但它提供了一些想法,如果你真的想通過網絡像控制檯的東西(它聽起來像你想要的,我不清楚)。
是的,這部分是我想要做的,但不是唯一的事情。 – decipher 2010-04-16 04:06:09
Ajax可能是解決方案中的一個成分,但我不認爲這是我正在全力尋找的。 – decipher 2010-04-15 18:22:02
使用ajax你不需要使用web瀏覽器持久化套接字。您可以製作一些小的REST服務器並使用會話變量來維護記錄的用戶信息。 – fmsf 2010-04-15 18:35:00