2011-04-01 52 views
0

嗨,我是一名PHP開發人員,試圖轉換爲Django,並且我有點難以理解在哪裏放置東西以及如何使用新語言。基本上我想知道的是例如在codeigniter中,我會在我的控制器中創建類和函數。我在哪裏做django?Django開發 - 如何正確佈局和使用代碼

我相信django中的'view'更像MVC框架中的控制器,但我可以找到的所有示例都非常簡單,只需調用一個模板並傳遞一些數據。

我目前在我目前的項目中有一個索引視圖和'費率'視圖。索引頁面將通過JS調用速率並傳遞一些GET變量。在我的PHP版本中,我使用這些來實例化我的費率類,當它具有所有需要的功能時。我想在Django中做到這一點。

回答

1

被稱爲「MVT」而不是「MVC」的原因是,對於Django的「視圖」意味着「數據呈現(根據給定的邏輯)」和「模板」意味着「顯示數據「。在傳統的MVC範例中,「控制器」意思是「邏輯執行者」,「視圖」是「執行邏輯結果的呈現」。 (他們幾乎是一樣的想法,但不完全)。

那麼,這是什麼意思?基本上,如果我在Symfony中構建某些東西,我會將所有邏輯放在sfAction組件中。在CodeIgniter中,它將位於CI_Controller中。在Django中,我將把所有的邏輯放在「視圖」中。

就像CI(和Zend等)將從控制器後代調用「視圖」一樣,Django視圖也會從其「視圖」中調用「模板」。 (Symfony的觀點通常被稱爲不同的語法,所以如果需要,我會留給讀者去研究)。


看着你的榜樣,它看起來像你想打電話給在「視圖」(這觀點在urls.py配置)的方法,它只是實例化其中的另一目的「所有你的邏輯在裏面」。喜歡的東西:

def ratesHandler(request): 
    rate = MyRatesClass(request.GET) 
    return HttpResponse("Insert something here. ") #or render_to_response 
+0

好吧,幫助很多謝謝。基本上我所要做的就是獲取參數,並使用它們從模型中加載數據,然後用它計算「比率」並將其返回給模板中的用戶。 我想我現在明白了一點,現在我的觀點應該看起來如此謝謝。 – Matthew 2011-04-01 15:37:23

+0

沒問題。(如果你不知道,我是一個在Django上做過一些工作的PHP開發人員 - 想你會喜歡這種類比) – cwallenpoole 2011-04-01 15:43:58

+0

是的,這對我有幫助,我一直在爲PHP 8開發工作做好準備但現在我似乎很難在Python/Django中做些什麼,我可以在PHP中做第二個事情:-) – Matthew 2011-04-01 15:47:27

0

邏輯總是屬於視圖。你可以把你喜歡的任何邏輯放在那裏 - 除非你想要,否則不需要把它放到課堂上。但是,如果邏輯與特定模型相關,最好將其作爲模型或模型管理器的一種方法。

0

在Django:「模特」去models.py,「控制器」進去views.py和「意見」進去的模板。

模型往往是繼承django.db.models.Model

控制器(在views.py)往往是函數的類,但如果你喜歡,你可以使用類。

請注意,如果您只是顯示數據庫中的數據,則通常可以使用generic views,因此幾乎不需要執行任何編碼。

我不能說你的帖子最後2段是否有問題。如果有問題,請編輯您的帖子,以便清楚。

+0

(作爲一個說明,雖然約定擁有所有你的模型在'models.py'中,你的視圖在'views.py'中,這些並不是嚴格要求 - 如果有大量的視圖或模型,可能會更容易創建一個不同的模塊結構) – cwallenpoole 2011-04-01 15:11:43

+0

Nope毫無疑問,我只是試圖定義我認爲我知道的事情,以及它在做什麼。 – Matthew 2011-04-01 15:32:52