2014-06-11 28 views
0

我有一個名爲ListAEQ觀點:Django的模板繼承:重複的觀點

class ListAEQ(MixinView, ListView): 
    template_name = 'allometric/aeq_list.html' 
    model = Equation 

    def get_queryset(self): 
     return (Equation.objects.filter(owner=self.request.user)) 

我要多次使用不同的模板使用的查詢集從這一觀點。例如,我有一個擴展aeq_list.html的模板,用不同的內容替換父模板中的塊。如何使用相同的視圖但不同的模板呈現此內容,而無需創建具有相同查詢集和不同tempate_name的多個視圖。我相信有辦法做到這一點根據原則「幹」

例如,我將創建一個新視圖

class ListAEQindia(MixinView, ListView): 
    template_name = 'allometric/aeq_list_india.html' 
    model = Equation 

    def get_queryset(self): 
     return (Equation.objects.filter(owner=self.request.user)) 

回答

1

你不說你怎麼確定哪個模板是被渲染。但假定它基於URL中的參數,則可以在視圖中定義get_template_names方法。

該方法可以訪問self.kwargs和self.request等,然後返回一個包含要使用的模板名稱的列表。 (請注意,它必須是一個列表,即使列表中只有一個項目。)

+0

所以裏面 ListAEQ(MixinView,ListView控件): 我會定義 高清get_template_names(): 和有功能用所有可能的子模板返回一個列表? – skullkid

+0

不,您可以根據請求返回單個相關模板。 –

+0

啊,我明白了!所以我使用邏輯來確定基於kwargs的template_name,然後將template_name設置爲等於我想要的模板 – skullkid