Django 所有页面的默认上下文

Oma*_*mar 6 python django templates

我想知道是否有任何方法可以为 django 中的所有页面发送默认上下文,例如无论其他上下文如何,用户总是传递到模板,对于我的特殊情况,我想将导航栏的上下文(例如类别和子类别)发送到所有页面,而无需发送所有视图。TIA

Ste*_*ven 8

您可以通过创建上下文处理器来实现这一点。在任何应用程序中创建context_processors.py,我建议在您的主应用程序上执行此操作。在这里您可以创建上下文字典。就像这样:

from product.models import SubCategory, Category


def add_variable_to_context(request):
    return {
        'subCategories': SubCategory.objects.order_by('id').all(),
        'categories': Category.objects.order_by("id").all(),
    }
Run Code Online (Sandbox Code Playgroud)

将此行添加到settings.py中的模板中以调用创建的上下文处理器

'OPTIONS': {
    'context_processors': [
        ....
        'yourAppName.context_processors.add_variable_to_context',
        ....
    ],
},
Run Code Online (Sandbox Code Playgroud)

现在您可以在base.html中调用您创建的上下文字典