views.py:
def home(request):
return render(request, 'blog/home.html', {'title': 'HOME'}, {'post': posts})
在此代码中,只有标题有效。 当我在{'title': 'HOME'}之前取{'post': posts} 时,帖子有效,但标题没有。 我必须在模板中使用两者。我是 django 的初学者。我该如何解决这个问题?
您只能有一个上下文字典,但字典可以包含任意数量的键/值。
def home(request):
context = {'title': 'HOME','post': posts}
return render(request, 'blog/home.html',context)
这个呢?
{
'title': 'HOME',
'post': posts
}
这样,两个变量都是同一对象的一部分。
将这两个值放入相同的数据结构至关重要,因为在代码中,post
是第四个参数,是为不同的功能保留的。
只能传递一个字典作为页面的上下文。
def home(request):
context = {'title': 'HOME',
'post': posts }
return render(request, 'blog/home.html', context)
Django 的render
函数只接受一个位置参数作为上下文。 这就是为什么你的第一个字典可以工作,第二个字典被砍掉,因为 Django 将第四个位置参数作为content_type
render(request, template_name, context=None, content_type=None, status=None, using=None)
编号 : https://docs.djangoproject.com/en/2.2/topics/http/shortcuts/
因此,您应该只传递一个包含所有所需数据的字典对象。 它可以有嵌套对象。
def home(request):
context_data = {'title': 'Home',
'post': posts }
return render(request, 'blog/home.html', context_data)