Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django所有页面的默认上下文_Python_Django_Templates - Fatal编程技术网

Python Django所有页面的默认上下文

Python Django所有页面的默认上下文,python,django,templates,Python,Django,Templates,我想知道是否有任何方法可以为django中的所有页面发送默认上下文,例如用户总是被传递到模板,而不管其他上下文如何,对于我的特殊情况,我希望将navbar的上下文(例如类别和子类别)发送到所有页面,而不必发送所有视图。 TIA您可以通过创建上下文处理器来实现这一点。在任何应用程序中创建上下文\u processors.py,我建议在主应用程序上创建。在这里,您可以创建上下文词典。像这样: from product.models import SubCategory, Category def

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

您可以通过创建上下文处理器来实现这一点。在任何应用程序中创建上下文\u 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(),
    }
将此行添加到设置.py中的模板中,以调用创建的上下文处理器

'OPTIONS': {
    'context_processors': [
        ....
        'yourAppName.context_processors.add_variable_to_context',
        ....
    ],
},

现在,您可以在base.html

创建上下文处理程序文档中调用创建的上下文词典: