Django模板继承:重复的视图

时间:2014-06-11 18:50:11

标签: django django-views template-inheritance

我有一个名为ListAEQ的视图:

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的多个视图。我相信根据原则" DRY"

有一种方法可以做到这一点

例如,我会创建一个新视图

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 个答案:

答案 0 :(得分:1)

您没有说明如何确定要渲染的模板。但假设它基于URL中的参数,您可以在视图中定义get_template_names方法。

该方法可以访问self.kwargs和self.request等,然后返回包含要使用的模板名称的列表。 (请注意,它必须是一个列表,即使列表只包含一个项目。)