Django - 上下文 - 如何将上下文传递给所有视图

Django - context - How to pass context to ALL views

因为我需要循环一个模型table来渲染导航栏中的options/nav-links,并且导航栏在每个页面上都被渲染。因此,我发现自己将相同的上下文传递给每个基于 class 的视图并且它非常重复:

class Xxx:
    ...
    def get_context_data(self, *args, **kwargs):
        context = super().get_context_data(*args, **kwargs)
        context['categories'] = Category.objects.get_categories_with_item()
        return context

有没有DRYer方法可以做到这一点?谢谢!!

PS。 还有,在get_context_data方法中是否需要*args?我看过有它的代码和没有

的代码

你可以写自定义context processor

from django.core.context_processors import request

def custom_processor(request):
    categories = Category.objects.get_categories_with_item() 
    return {"categories": categories}

您需要将此功能添加到 TEMPLATES -> "OPTIONS" -> "context_processors"