我在模型中定义了一个Horario
类,我的模板目录中有一个horario_list.html
。
如果我定义这个类,一切正常:
class HorariosView(generic.ListView):
model = Horario
def get_queryset(self):
return Horario.objects.all()
但是,如果我按列表更改返回类型,例如
class HorariosView(generic.ListView):
model = Horario
def get_queryset(self):
return list(Horario.objects.all())
我收到例外TemplateDoesNotExist
。
现在,如果我在课堂上添加template_name
属性,一切都会再次起作用:
class HorariosView(generic.ListView):
model = Horario
template_name = 'horario_list.html'
def get_queryset(self):
return list(Horario.objects.all())
何时以及为何需要template_name
?
答案 0 :(得分:1)
如果有真正的查询集,Django会询问它的model
属性,并根据该模型名称构建模板名称;见the code。但是,列表没有model
属性,因此Django无法确定应该调用模板的内容。
注意,无论如何,你真的不应该从get_queryset
方法返回除查询集之外的任何内容。