我正在尝试检索存储在模型中的一些数据。
模型:
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
这个错误是关于什么的? 我的代码有什么问题? 谢谢。
答案 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})