一种更加简洁的方法是复制 Django 的模板视图:
class TemplateView(TemplateResponseMixin, ContextMixin, View):
"""
A view that renders a template. This view will also pass into the context
any keyword arguments passed by the url conf.
"""
def get(self, request, *args, **kwargs):
context = self.get_context_data(**kwargs)
return self.render_to_response(context)
然后将其添加到get_context_data函数中。或者您可以简单地使用TemplateView,它允许您指定模板名称,然后您可以重写get_context_data函数:
class SomeView(generic.TemplateView):
var1 = 0
var2 = 1
template_name = 'some_template.html'
def get_context_data(self, **kwargs):
context = super(SomeView, self).get_context_data(**kwargs)
context.update({'var1': self.var1, 'var2': self.var2})
return context
编辑
Django有通用视图,您可以将其用于各种事情,我强烈建议您查看文档以获取完整列表。这些通用视图具有函数,您可以覆盖它们以执行默认不支持的自定义操作。在您的情况下,您只需要一个带有上下文变量的模板,这意味着您可以子类化TemplateView并提供template_name,最后您可以覆盖get_context_data函数以添加您的上下文数据,这就是您所需的全部内容,您的情况下第二段代码就足够了。