2010-05-22 16 views
3

我進入python的CGI和碰到Django。我不太清楚我非常瞭解它。這是我必須安裝在Apache內部,還是隻能使用我的CGI?究竟是一個Web應用程序框架?

想知道,因爲我很想學習它,但我使用的服務器並沒有給我很多特權。

感謝

回答

0

像Django的Web應用程序框架將產生自己的流程和處理來自Web服務器的請求代替CGI。他們還提供了通過創建模板,部分模板,幫手等來簡化html的工具。

如果您沒有完全控制您的服務器,您的主機將需要爲您安裝它。

0

Web應用程序框架獨立於正在使用的實際HTTP服務器。服務器傳遞一個使用它寫入請求的應用程序,並且它會啓動一些應用程序並吐出一個響應,並將其發送回HTTP服務器。

Django有3個受歡迎的HTTP服務器連接器:WSGI,FastCGI和mod_python。這些都是在這裏解釋的...所以我不會重複那些很容易被發現的信息。

+1

nitpick:wsgi,fastcgi和mod_python不是django的東西,雖然它們是python的東西,可能適用於任何python web框架 – 2010-05-22 01:36:45

+0

任何Python web應用程序 - 你不需要涉及框架。 – Quentin 2010-05-22 12:26:40

0

基本上任何框架的功能是: -

  1. 確保你不必做重複的工作。
  2. 很容易讓你重新使用和模塊化
  3. 他們提供了一個抽象層(在大多數情況下,讓你更有效率)

所以,Django是一個Web應用程序框架;自然它滿足以上所有三個條件。

如果您對使用Python的cgi編程感興趣,您應該不要看Django。

另一方面,如果你正在尋找網頁開發的選項,那麼django肯定是一個很好的選擇,而手動cgi編程不是。

4

雖然你可以運行CGI之上的Python的Web框架,我不認爲你到:一個Web框架爲您提供了許多額外的功能,使你的編碼更容易,但部分你付出的代價是,框架有很多額外的代碼來提供這些功能 - 每次你的web應用程序啓動時,代碼需要被加載,並且它的初始化部分被執行。

CGI會在每次訪問相應的URL時爲您的代碼啓動一個全新的過程,並且該過程會在完成對該單次訪問的響應時終止。因此,您確實希望儘可能少進行初始化工作,以避免對用戶請求的響應速度非常緩慢。因此,如果您的所有託管服務提供商都允許您使用CGI,那麼您可能需要編寫「向下的CGI接口」,以儘量減少啓動/關閉開銷。

您可以對Marek Kubica的howto「HOWTO在網絡中使用Python」中的問題和可能性有一個很好的概述。WSGI(可以連接到底層web服務器的許多其他方式)可以運行在CGI之上,因此理論上可以使用任何支持WSGI的Python web框架(這意味着幾乎所有現代的框架) - 關鍵是,除非您只是學習和「玩耍」,否則您不會想要在您實際服務的網頁上一次又一次地產生啓動開銷。 (如果你只是學習和玩耍,你可以在自己的機器上運行一個Web服務器,供你自己使用,所以你的託管服務提供商的限制是無關緊要的;-)。

如果您決定在「裸CGI」級別進行編程,您可以從this page開始 - 請確保您遵循從它到各種有用教程的各種鏈接以及有用且有趣的Python CGI腳本示例。

對於許多可用的Python Web應用程序框架中的一些的調查,您可以開始here 對於每個涵蓋的框架,您可以找到一些信息和鏈接。

最後但並非最不重要的一點是,您不應忽視在Google App Engine上開發Web應用程序的可能性 - 儘管它有自己的特性和侷限性,它確實提供了一個WSGI兼容環境,即使是非常強大的使用也是免費的。有一些有趣的輕量級框架專門爲了利用App Engine而開發,比如優秀的tipfy(tipfy wiki中的這個頁面也鏈接到其他頁面),但是您可以在那裏運行流行的django框架(具有特殊性和侷限性,如我說 - 特別是,下面沒有關係數據庫 - 但它仍然是最受歡迎的選擇,儘管如此)。

在App Engine早期,有些人擔心使用它可能導致「鎖定」 - 因爲它與其他主機環境不同,不會爲其開發的Web應用程序很難在其他地方移植到別處想要?幸運的是,開源軟件如appscaletyphoonae消除了任何此類擔憂。 012p: