2010-03-13 48 views
1

當你在「大企業」中做大型網站時,你最可愛的是和一些開發人員一起工作。如何用Django開發模塊化Web UI?

讓我們假設dev A插入新用戶數據,B創建用戶列表,C做一些特權管理,D做瘋狂統計圖與圖像生成等工作。

每個開發人員都開始開發他自己的組件,創建一個視圖和一個模板並獨立測試,直到每個組件工作。

現在,客戶希望將所有這些組件放在一個HTML頁面上。如何實現這一目標? 如何以組合形式組裝不同的視圖/模板,以便它們保持模塊化並且可以獨立開發和測試?

看起來繼承不是要走的路,因爲所有這些UI組件都是平等的,沒有層次結構。

組裝模板的想法是一樣的東西

<html> 
<head> 
// include the css for the components and their assembly 
</head> 

<body> 
// include user data form here 
<some containers, images, and so on> 
// show user list 
// show privilege administration in this part 
// and finally, the nice statistic graphs 

// perhaps, we want to display some other components here in future 
</body> 
</html> 

我還沒有發現在網絡上的答案。大多數人想出了一個大模板,它只是實現了所有的UI功能,消除了所有的模塊性。每個組件都應有自己的模板和視圖,只處理由一個人開發的組件,然後將它們粘在一起,就像磚塊一樣。

我非常感謝任何提示!

回答

3

Inclusion tags是要做到這一點的方法。每個應用程序都定義了自己模板片段的標籤,然後主模板可以將它們組裝成一個頁面。

+0

似乎工作正常,雖然我不確定我採取的方式是最簡潔和必要的方式,但我找不到詳細的示例。 – nh2 2010-03-17 01:01:37

+0

請參閱James Bennett的博客文章 - 它有點過時(它不包括快捷方式的裝飾器),但其原理是正確的:http://www.b-list.org/weblog/2006/jun/07/django -tips-write-better-template-tags/ – 2010-03-17 07:07:14

+1

謝謝,那篇文章確實很清晰。 但是,你會推薦包含標籤,即使對於像表單等複雜的東西?我發現的大多數例子都是處理諸如'顯示這位作者的所有書籍'或者'從X獲取最新的NUM'的小事情,但實際上沒有一個例子,模板標籤包含的東西必須處理用戶輸入和相應的邏輯 - 在模板標記函數中,而不是視圖中,我覺得很奇怪,但我只是在猜測。 – nh2 2010-03-17 19:21:54