是否有一种方法可以将项目列表应用于每个视图,而不必手动对每个视图进行操作? 我的导航栏中有一个项目列表,我必须将其添加到每个视图中才能在每个页面中显示:
category_list = Category.objects.all()
context = {
'category_list': category_list
}
答案 0 :(得分:1)
这是通过context processors [Django-doc]完成的。这些函数可在每次渲染模板时将项目添加到上下文中。例如,您可以在名为app/context_processors.py
的文件中写入这样的处理器(使用应用程序的名称为app
)
# app/context_processors.py
def category_list(request):
return {
'category_list': Category.objects.all()
}
然后在settings.py
文件中注册上下文处理器:
# settings.py
# …
TEMPLATES = {
# …,
'OPTIONS': {
# …,
'context_processors': [
# …,
'app.context_processors.category_list'
]
}
}