2010-10-07 137 views
1

這是一個最佳實踐問題,考慮到我很累,它可能沒有多大意義。django:通用視圖+自定義模板標籤或自定義視圖+通用/正常模板標籤

我一直在編寫一個博客應用程序作爲學習經驗,並作爲我正在開發的網站的實際部分。

我設計它最喜歡的應用程序,讓您可以通過多種標準列出的博客文章,即

/blog/categories/ 
/blog/authors/ 
/blog/tags/ 
/blog/popular/ 
etc. 

在每一頁上面我也想列出多少項目是該標準的一部分

即,對於「類別」,我希望/ blog/categories /列出所有不同的類別,但也要提及該類別中有多少篇博文,並且可能會列出這些條目。

Django似乎給你很多方法來做到這一點,但沒有太多跡象表明什麼是最好的靈活性,可重用性和安全性。

我注意到,您可以

答:使用通用/很輕的觀點,通過一個查詢集的模板,使用自定義的模板標籤收集任何剩餘的必要信息。

即傳遞包含的類別的查詢集,併爲每個類別使用模板標籤抓取的條目該類別

或B:使用自定義/重視圖,通過一個或多個查詢集+額外必要的信息該視圖,並使用較少的模板標籤來獲取信息。

即傳遞包含類別+其條目的字典列表。

我看到的方式是,在HTTP請求中需要查看視圖,收集所需的所需的信息(特定於所請求的內容)並傳遞HTTP請求和上下文以進行呈現。模板標籤應該用於獲取與當前模板無關的信息(即獲取博客中最新的條目或最受歡迎的條目,但他們可以真正做你喜歡的任何事情)。

這種缺乏定義(或者我的無知)已經開始接觸到我,我希望在設計和實現方面保持一致,因此歡迎任何輸入!

回答

1

我想說你的理解是對的。收集信息並通過模板呈現它的主要方法始終是視圖。模板標籤可用於您可能需要做的任何額外信息和處理,可能跨越多個視圖,這與您正在呈現的視圖沒有直接關係。

你不應該擔心你的觀點是通用的。畢竟,這就是內置的通用視圖。一旦你需要開始跨越他們提供的內容,那麼你一定要讓它們專用於你的用例。您當然可以找到在多個視圖中使用的一些常見功能,在這種情況下,您可以將其分解爲單獨的功能或甚至上下文處理器,但總體而言,視圖是用於特定特定用途的獨立位代碼。

相關問題