编辑views.py后,会发生字典错误

时间:2016-06-27 08:41:02

标签: django

当我使用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'})

1 个答案:

答案 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)。

Example in documentation