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

use*_*820 2 django django-views

因此,我正在编写此应用程序,并使用通用视图对象ListView和ObjectView。

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

现在,我有两个类,一个扩展了Listview,另一个扩展了DetailView,它们都具有相同的get_context_data方法。

虽然工作正常,但真的很痛苦,但是是否有一个父类可以重写get_context_data,从而使ListView和DetailView继承新的get_context_data?这样看起来会更好:)

谢谢。

X

jon*_*man 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
Run Code Online (Sandbox Code Playgroud)