基于Django类的通用视图和继承

时间:2012-11-07 05:56:20

标签: django django-views

所以我正在编写这个应用程序并使用通用视图对象ListView和ObjectView。

我已经重写了方法get_context_data,以便能够在两种情况下添加相同的额外上下文(与对象无关)。

现在我有两个类,一个扩展Listview,另一个使用相同的get_context_data方法扩展DetailView。

虽然这个工作正常但是真的很难看,是否有一个父类可以覆盖get_context_data,这会使ListView和DetailView继承新的get_context_data?它会看起来更好:)

谢谢。

X

1 个答案:

答案 0 :(得分:5)

如果您想要覆盖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