Meta:为什么没有基于自定义类的视图?

时间:2013-03-06 00:42:32

标签: django django-class-based-views

这似乎是一个非常有用的明显模式,并帮助开发人员遵守DRY。例如,定义可以传递给每个视图的特定上下文。据我所知,没有办法做到这一点。

1 个答案:

答案 0 :(得分:1)

根据文档中的定义,可以扩展所有基于类的通用视图,并覆盖其方法。例如,如果除了视图定义的自定义上下文变量之外,还需要定义额外的上下文变量,只需使用get_context_data方法添加它们:

class CustomDetailView(DetailView):
    model = MyModel
    def get_context_data(self, **kwargs):
        context = super(CustomDetailView, self).get_context_data(**kwargs)
        context.update({
            "foo": "bar",
            "baz": 999,
        })
        return context

或者,您可能需要定义某个mixin,根据需要将其包含在每个视图中。