gpt4 book ai didi

python - 值错误字典更新序列元素#0的长度为1;需要 2 个

转载 作者:行者123 更新时间:2023-12-01 07:50:13 25 4
gpt4 key购买 nike

我想编写一个上下文处理器,以便可以在django(版本2.1)中的应用程序中的任何位置看到该列表。我收到错误:

ValueError at /

dictionary update sequence element #0 has length 1; 2 is required
def following_issues(request):
request_context = RequestContext(request)
request_context.push({'following_issues': Issue.objects.filter(followers=request.user.is_authenticated)})
return request_context

在我的设置中:

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.request',
'django.template.context_processors.debug',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'base.context_processors.following_issues',
],
},
},
]

最佳答案

我认为您误解了如何编写上下文处理器。作为documentation [Django-doc]说:

A context processor has a very simple interface: It's a Python function that takes one argument, an HttpRequest object, and returns a dictionary that gets added to the template context. Each context processor must return a dictionary.

所以你应该简单地写成:

def following_issues(request):
if request.user.is_authenticated:
return {
'following_topics': Issue.objects.filter(followers=request.user)
}
else:
return {
'following_topics': Issue.objects.none()
}

因此,我们可以简单地返回一个字典,在其中将 follow_topics 映射到 Issue.objects.filter(..) 表达式上。

此外,您不能指定followers=request.user.is_authenticated,因为这是一个 bool 值,而且鉴于我正确理解建模,您可能会过滤用户。我在这里写道,如果用户未经过身份验证,我们将返回一个空的 QuerySet

关于python - 值错误字典更新序列元素#0的长度为1;需要 2 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56265585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com