一种更简洁的方法是复制 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 函数以添加您的上下文数据,这就是它的全部内容,第二部分在您的情况下,您只需要代码。