2012-11-07 23 views
1

因此,我正在編寫此應用程序並使用通用視圖對象ListView和ObjectView。基於Django類的通用視圖和繼承

我已經重寫get_context_data方法,以便能夠在兩種情況下添加相同的額外上下文(與對象無關)。

現在我有兩個類,一個擴展ListView和另一個擴展DetailView兩個相同的get_context_data方法。

雖然這工作正常,真的很傷心看到,是否有一個父類,我可以重寫get_context_data從那將使ListView和DetailView繼承新的get_context_data?它會看起來好多了:)

謝謝。

X

回答

3

如果你是如何想重寫get_context_data都是一樣的,我會用一個mixin。

class CommonMixinExample(object): 

    def get_context_data(self, **kwargs): 
     # do stuff in here 
     return super(CommonMixinExample, self).get_context_data(**kwargs) 

class YourListView(CommonMixinExample, ListView): 
    # other code 

class YourDetailView(CommonMixinExample, DetailView): 
    # other code 
+0

謝謝你的回答,但我不明白爲什麼mixin應該繼承我試圖寫一個視圖的對象。如果我想使用YourListView或YorDetailView類來渲染其他對象,該怎麼辦? – user1664820

+0

我的錯誤,我認爲用對象你的意思是我的示例對象不是一個實際的python對象,我現在得到它,我創建了Mixin,它工作正常。謝謝! – user1664820