Django - 无法将字典更新序列元素#0转换为序列

时间:2015-06-28 21:50:31

标签: python django

我正在尝试检索存储在模型中的一些数据。

模型:

class Contact(models.Model):
    name = models.CharField(max_length=20)
    number = models.IntegerField()
    slug = models.SlugField()

    def __unicode__(self):
        return self.name

网址:

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^all$', 'about.views.all_contacts'),
    url(r'^$', 'about.views.index')
]

的观点:

from models import Contact

def index(request):
    contacts = Contact.objects.all()[:5]
    return render(request, 'about/home.html', contacts)

def all_contacts(request):
    contacts = Contact.objects.all()
    return render(request, 'about/all.html', contacts)

模板:

{% for contact in contacts %}
    {{ contact.name }} | {{ contact.number }}
{% endfor %}

我收到此错误:

   / _的TypeError无法将字典更新序列元素#0转换为   一个序列

Django Version: 1.8.2
Exception Type: TypeError
Exception Value:    
cannot convert dictionary update sequence element #0 to a sequence

这个错误是关于什么的? 我的代码有什么问题? 谢谢。

2 个答案:

答案 0 :(得分:4)

来自文档:

  

可选参数

     

<强>上下文

     

要添加到模板上下文的值的字典。默认情况下,这是一个空字典。如果字典中的值可以调用,   视图将在渲染模板之前调用它。

所以:

def all_contacts(request):
    context = dict()
    context['contacts'] = Contact.objects.all()
    context['otherStuffProcessedByTheTemplate'] = …
    # etc…

    return render(request, 'about/all.html', context)

答案 1 :(得分:2)

除了由@Bogey Jammer明确创建context之外, 您可以将contacts添加到context,方法是在dict中将其指定为render的参数:

def all_contacts(request):
   contacts = Contact.objects.all()
   return render(request, 'about/all.html', {'contacts': contacts})