Python Django Model.objects.all()未显示在建议中

Python Django Model.objects.all()未显示在建议中,python,django,models,Python,Django,Models,我正在使用用于Visual Studio的Python工具(Python 3和django 1.6),并尝试从如下表中访问数据: from django.http import HttpResponse from django.template import Template, Context from ticket.models import Task def ticket_listing(request): objects = Task.objects.all().order_by(

我正在使用用于Visual Studio的Python工具(Python 3和django 1.6),并尝试从如下表中访问数据:

from django.http import HttpResponse
from django.template import Template, Context
from ticket.models import Task

def ticket_listing(request):
   objects = Task.objects.all().order_by('-due_date')
   template = Template('{%for elem in objects %} {{elem}}<br/> {% endfor %}')
   context = Context({'objects', objects})
   return HttpResponse(template.render(context))
从django.http导入HttpResponse
从django.template导入模板,上下文
从ticket.models导入任务
def票据清单(请求):
objects=Task.objects.all()
template=template(“{%for objects%}{{elem}}}
{%endfor%}” 上下文=上下文({'objects',objects}) 返回HttpResponse(template.render(context))

问题是,任务完成后,对象不会出现在建议中,而且似乎不可用。为什么?如果我运行此代码,我会得到一个空模板。。。我已经检查了数据库中的条目(3行)。

代码中有一个输入错误,但不会产生
类型错误。。。您已创建了一个集合而不是字典以传递到模板。Django没有抱怨,因为它是一个iterable,并且没有类型检查

>>> {1, 2}
set([1, 2])
>>> {1: 2}
{1: 2}
您只需将错误的行替换为:

context = Context({'objects': objects})

您确定没有抛出错误吗?这是错误的
{'objects',objects}
并且应该产生
TypeError
,因为正确的语法是
{'objects':objects}
也可能是数据库中没有任务对象,并且
Task.objects.all()
返回空的queryset。感谢它解决了我的问题,因为这样做的好方法是
{'objects':objects}
并且没有显示任何错误。现在可以了,有类型检查。但是我认为由于queryset是懒惰的,所以django没有尝试评估queryset。如果对查询集进行了强制求值,例如list(queryset),则此行
context=context({'objects',objects})
将引发
TypeError
+答案是1。查询集没有问题。它的构造是正确的,但一旦进入模板,它就会尝试从上下文中获取
对象
键,该键在集合中不存在,并且会自动失败。但我们正在深入错误。请记住将字典正确地传递给模板上下文;)