将项目列表应用于views.py

时间:2020-02-29 18:50:52

标签: python django

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

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

1 个答案:

答案 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'
        ]
    }
}
相关问题