2013-02-25 25 views
0

在網站上創建頁面時,應該根據誰在查看它來顯示不同信息,最優雅的設計是什麼?幾種可能的做法,我想出了:在Django中設計訪問級別感知視圖

  1. 通過所有的數據到模板,與規定什麼樣的權限的用戶具有可變沿,並有模板選擇顯示或不顯示基於這一點。

  2. 根據訪問級別具有不同版本的模板。

  3. 根據訪問級別具有不同版本的視圖。

對於一個具體的例子,假設你有一個用戶配置文件的頁面。如果用戶登錄,他們應該看到他們所有的信息。如果不同的用戶登錄,他們應該只看到該用戶公開的內容。如果管理員登錄,他們應該看到所有信息和一組管理操作按鈕。

+0

我把數字1,只是簡短和簡單 – catherine 2013-02-25 15:56:30

+0

數字1是絕對不是你應該怎麼做。 – 2013-02-25 18:24:57

回答

2

版本1是可怕的。它將訪問邏輯放置在模板中,可能(意外)暴露您可能不想公開的內容。

你絕對不應該只是將的一切都傳遞給模板,在另一個變量上傳遞以確定顯示。

在視圖(向您的模板呈現單個正確的對象)或模型中進行過濾。

儘管並非總是100%可能,但應努力使業務邏輯遠離模板。

如果您需要根據用戶的角色而有顯着不同的模板,那麼爲每個角色分開模板就是我要做的方式。

0

版本1是你最好的選擇。我會通過上下文處理器將所需的值注入上下文。

+0

由於我在答案中陳述的原因,我投下了這個答案。 – 2013-02-25 17:54:14

+0

不用擔心。這個問題很模糊,模棱兩可的問題得到了不明確的答案。 – Brandon 2013-02-25 17:55:43