python - 将项目列表应用于views.py中的每个视图
问题描述
有没有一种方法可以将项目列表应用于每个视图,而无需为每个视图手动执行?我的导航栏中有一个项目列表,我必须将其添加到每个视图中以使其显示在每个页面中:
category_list = Category.objects.all()
context = {
'category_list': category_list
}
解决方案
这是通过上下文处理器[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'
]
}
}
推荐阅读
- javascript - 如何使用 Axios 发布 formData 的文件和用户信息?
- javascript - 对象对象响应有问题吗?
- pandas - 使用 pandas 读取 csv 时出现“skiprows”的问题
- makefile - 1:1 配方的 Makefile 模式,其先决条件在目录和文件扩展名中都不同于目标
- splunk - Splunk 在外部查询提供的时间范围内获取内部查询结果
- html - 定位 HTML 表格,使文本环绕
- javascript - ES6 模块:必须在返回变量之前显式定义变量吗?
- python - Python中的简单代码中“SyntaxError:无效语法”背后的原因是不使用逗号
- outlook - Microsoft Graph API:为什么在过去创建重复事件会返回 400?
- react-native - react-native-image-picker 在 android 10 中不起作用