当我使用runserver
本地启动应用程序并在浏览器中显示相应的网址时,发生了一些奇怪的错误消息。
ValueError at /
dictionary update sequence element #0 has length 5; 2 is required
Request Method: GET
Request URL: http://127.0.0.1:8000/
Django Version: 1.9.7
Exception Type: ValueError
Exception Value:
dictionary update sequence element #0 has length 5; 2 is required
Exception Location: C:\djangogirls\myvenv\lib\site-packages\django\template\context.py in __init__, line 20
Python Executable: C:\djangogirls\myvenv\Scripts\python.EXE
Python Version: 3.4.3
Python Path:
['C:\\djangogirls',
'C:\\Windows\\system32\\python34.zip',
'C:\\Spiele\\Python\\DLLs',
'C:\\Spiele\\Python\\lib',
'C:\\Spiele\\Python',
'C:\\djangogirls\\myvenv',
'C:\\djangogirls\\myvenv\\lib\\site-packages']
Server time: Mon, 27 Jun 2016 10:22:02 +0200
使用以下目录后发生错误: views.py和我很确定可能会遗漏一些东西。将其设置回空状态无助于修复它。
from django.shortcuts import render
from django.utils import timezone
from .models import Post
def post_list(request):# Create your views here.
posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
return render(request, 'blog/post_list.html', {'posts'})
答案 0 :(得分:1)
您正在调用render
功能底部的post_list
功能。第三个参数(context
)应该是一个字典,但你没有传递它。所以该行可能会改为:
def post_list(request):# Create your views here.
posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
return render(request, 'blog/post_list.html', {'posts': posts})
看到我们现在正在传递{'posts': posts}
。这告诉django它应该将posts
(您在上面定义了一行)传递给模板,并使其可以在那里被称为posts
。
你可以从Django返回的ValueError
中看到。它期望长度为2(一个键和一个值),但它的长度为5(字符串posts
)。