2010-02-16 69 views
22

我剛開始使用Python,我想知道如何在不需要框架的情況下編寫Web應用程序。我是一名體驗PHP開發人員,但我有嘗試使用Python的衝動,我通常喜歡在沒有框架限制的情況下從頭開始編寫代碼。在沒有框架的python中編寫web應用程序?

+4

「框架的限制」。你爲什麼說框架是一個限制? PHP是一個巨大而複雜的框架,可以幫助您避免編寫大量繁瑣的代碼。爲什麼放棄這種水平的權力?框架有什麼問題PHP的確定,但另一個非PHP框架不正常? – 2010-02-16 20:17:30

+9

PHP並不是一個真正的框架,它是一種解釋型語言,但不是框架。對我來說,大多數情況下框架是一個限制,因爲我必須做框架告訴我必須做的事情。例如,在CakePHP中,你必須命名控制器,視圖和模型一個特定的名字,你不需要這樣做,但是如果你不這樣做,那麼事情就不會「神奇地」聯繫在一起,那麼關鍵是什麼?使用框架?框架充滿了我不需要讓它們變慢的功能。我更喜歡寫我自己的東西(我保存了我所有代碼的庫),我是這樣的怪胎:D – 2010-02-17 02:16:17

+1

@Dr Hydralisk:PHP可以獨立運行。但是,當嵌入到Apache中時,它絕對是一個框架。嘗試從頭開始編寫自己的mod_php版本,並查看PHP爲您自動完成的所有工作。使用框架的一點是它可以讓你擺脫細節。 PHP將您從大量的HTTP處理細節中解放出來。許多Python框架將您從細節中解放出來。框架是「充滿了功能」?真?你能否更新你的問題來明確你不喜歡的功能? – 2010-02-17 02:24:37

回答

23

WSGI是Web服務器接口的Python標準。如果你想創建你自己的框架或者在沒有框架的情況下運行,你應該研究一下。具體而言,我發現Ian Bicking's DIY Framework文章有幫助。

順便說一句,我傾向於認爲框架是有用的,並親自使用Django,像塔的工作方式,並已在過去使用Bottle爲原型—你可能想看看瓶子,如果你想要一個留出您的方式microframework。

+5

謝謝,我會研究。人們在這裏回覆得非常快,我喜歡這個地方:D – 2010-02-16 20:19:29

2

您將不得不尋找類似CGI或FastCGI,它提供了一個API來與Web服務器進行通信。

Google App Engine使您可以編寫簡單的應用程序,甚至提供一個本地網絡服務器,您可以嘗試一下。

+0

我認爲App Engine是一個很好的建議。 'webapp'框架非常簡單,它的容量就像在商品託管上的普通舊PHP一樣容易起來和運行。 – 2010-02-16 20:27:29

+0

我正在尋找App Engine,看起來很有趣。 – 2010-02-16 20:38:51

3

其中最輕的框架是mod_wsgi。更少的工作將是大量的工作,解析HTTP請求來查找標題和URI的方法,解析GET或POST查詢/數據關聯,處理文件上傳,cookies等。

mod_wsgi將會只處理請求解析和框架結果的基礎知識。

會話,餅乾,使用您的響應頁面的模板生成器將是一個驚人的工作量。

一旦你開始了這條道路,你可能會發現一點點的框架支持有很長的路要走。

+0

我喜歡挑戰:D – 2010-02-16 20:39:19

+0

嗯,mod_wsgi在技術上並不是一個框架,它是一個WSGI適配器。它甚至不處理HTTP請求解析,就像Apache爲它做的那樣。 – 2010-02-17 00:00:58

+2

@Graham Dumpleton:「技術上是一個框架」?技術定義是什麼? – 2010-02-17 02:21:19

0

對於一個PHP程序員,我認爲mod_python是一個很好的開始沒有任何框架的方法。它可以直接用作Apache 2模塊。你可以有代碼標記(如在PHP <? ?>),甚至有條件的HTML輸出(HTML中的if語句):

<% 
if x == y: 
    # begin 
%> 

    ... some html ... 

<% 
# end 
%> 

(摘自簡化例子onlamp.comPython Server Pages tutorial

+0

看起來不錯,但我也是反apache的。對Nginx有什麼要求嗎? – 2010-02-16 20:40:46

+0

似乎有一個用於nginx的wsgi模塊:http://wiki.nginx.org/NginxNgxWSGIModule – AndiDog 2010-02-16 20:52:58

-2

答案是「不」。使用框架使您的代碼更具可維護性,可伸縮性,可讀性,可測試性和模塊化。

+0

就像我上面所說的,我喜歡寫我自己的東西,當我寫它們時,我確保我遵循所有這些事情,在編程方面我是一個完美主義者(一個嚴重的優化怪胎,它是一種痛苦)。我爲我的大部分代碼保留了一個庫,所以當我需要做一些事情時,我只需將它們粘在一起,然後我就得到了一個個人迷你框架,它只具有我需要的功能,但如果需要,仍可以添加到以後的功能中。 – 2010-02-17 02:20:14

+1

正確的NIH解決方案(如果有這樣的事情)將會寫*框架*,而不是爲了避免框架。能夠引入合理的抽象(即使用框架)使得編寫出色的應用程序變得可行。我不知道這意味着什麼是「一個嚴重的優化怪胎,它是一個痛苦」,但它聽起來並不像我想要聘用的任何人 - 花時間優化代碼通常是不經濟和浪費的。透明度,程序員時間,可維護性和可測試性通常都值得在速度和空間上進行優化。 – 2010-02-17 02:29:34

1

這裏的人們喜歡框架。我注意到的一個缺點是Python缺乏Sessions的易用模塊作爲內置的庫,儘管它可以在PHP中使用,而在Perl中使用CGI :: Session。

你最終會做:

import cgi # if you want to work with forms and such 
import cgitb; cgitb.enable() # to barf up errors to the web 
print 'Content-type: text/html\n\n' # to start off any HTML. 

你將不得不寫的東西會在你自己。

+0

我想我只是不會使用Python進行Web開發,我只是將它用作通用編程語言。要回到PHP,也許給Rails另一個嘗試(我知道它是一個框架..它是我唯一真正喜歡的,它只是Ruby語法非常討厭)。 – 2010-02-17 17:09:48

相關問題