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"
因为我需要循环一个模型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"