将项目列表应用于views.py中的每个视图



有没有一种方法可以将项目列表应用于每个视图,而不必为每个视图手动执行?我在导航栏中有一个项目列表,我必须将其添加到每个视图中,才能在每个页面中显示:

category_list = Category.objects.all()
context = {
'category_list': category_list
}

这是通过上下文处理器[Django-doc]完成的。这些函数在每次渲染模板时向上下文中添加项。例如,您可以在名为app/context_processors.py(app是应用程序的名称(的文件中写入这样的处理器:

# app/context_processors.py
defcategory_list(request):
return {
'category_list': Category.objects.all()
}

然后在settings.py文件中注册上下文处理器:

# settings.py
# …
TEMPLATES = {
# …,
'OPTIONS': {
# …,
'context_processors': [
# …,
'app.context_processors.category_list'
]
}
}

最新更新