2014-01-19 37 views
0

我的編碼體驗完全是使用python和c的科學應用程序,始終從筆記本電腦或遠程服務器羣集上的命令行運行。我有一個命令行工具(它根據用戶輸入做了一些簡單的計算),我想移動到一個網頁上。用戶將輸入參數到文本字段中,輸出將被計算並顯​​示(數字,可能是一些圖)。我有不知道如何使這個過渡,我淹沒在我在網上找到的所有東西。 設置基於web的python應用程序的基本概述是什麼?將python從命令行遷移到網頁的概述

特別是:

  • 網站是在HTML;我如何構建可與計算代碼交互的界面?
  • 這樣的程序是否運行在我的服務器上(即用戶發送參數,服務器計算,顯示結果);或者可以將代碼嵌入到用戶端運行的頁面中?
  • 如果我的代碼使用像numpy或scipy這樣的附加(非標準)庫,那些可以包含嗎?
  • 如果我的代碼使用了大量的數據(即數據庫),設計模式將如何改變?這是Django嗎?

編輯:谷歌應用程序引擎?

回答

1

您的問題有詳細的答案,這取決於您的要求。您應該定義您的要求並檢查您的選擇並選擇最適合的選擇。

  • 您可以使用django或更簡單/更小的web框架(如bottle.py或flask)來執行每個Web項目所需的樣板文件。 Django是更大的框架,但它帶有用戶/認證/授權,管理面板和許多其他內置的好東西。
  • 您的程序幾乎肯定會在您的服務器上運行,如果網頁可以在客戶端上運行程序,則認爲它存在安全風險。也就是說,你有其他的選擇,如Java小程序,閃存等。或者,如果你可以將你的應用程序移植到JavaScript,那麼一切都是花花公子(我雖然懷疑)。
  • 看到我以前的答案。
  • 如果您正在進行數據挖掘或類似的工作需要很長時間,您可以將作業添加到隊列中,並讓用戶稍後再看到輸出。參見芹菜或類似的工作隊列。除此之外,您可以使用關係數據庫,像MongoDB等非SQL數據庫,這些都取決於您的要求。你的數據有多大?它是否具有內在關係性?這些都是你應該考慮的東西。
+0

謝謝@tayfun,這非常有幫助。你能詳細解釋一下「每個Web項目需要的一些樣板文件」 - 這很大程度上是我不清楚的一個...... Web項目需要什麼* – DilithiumMatrix

+0

看看bottle.py或django。他們提供的一切都有助於在某些情況下。在典型的Web項目中,您需要cookie處理,管理面板,數據庫連接池/管理,請求參數處理,用戶表等。如果你不使用抽象它的框架,你必須自己編寫它們。 – tayfun

1

Django - 或者類似的網頁框架 - 實際上在一開始就會出現。 Web框架包含各種組件,但最重要的部分是在步驟2中:獲取參數並返回響應。包括Django在內的許多內容還包含滿足第1步和第4步的元素,即用於生成HTML的模板系統和數據庫層。

通常,它在Django中工作的方式就是這樣。您可以爲您的項目定義一些URL,並將它們與視圖關聯起來,視圖基本上是服務器上的Python代碼。該視圖將從URL中獲取參數並運行一些Python,如果這是您的項目需要的話,可能包括numpy/scipy。然後它會返回一個響應:該響應可能通過模板系統生成,或者可能是通過圖像庫輸出的圖形等。

我認爲最好的方式讓你看看這一切是如何融合在一起的做Django tutorial瞭解它是如何工作的。然後隨時回到這裏與任何具體問題。