【发布时间】:2020-03-03 21:28:38
【问题描述】:
我想知道是否有任何方法可以为 django 中的所有页面发送默认上下文,例如无论其他上下文如何,用户总是传递给模板,对于我的特殊情况,我想为导航栏发送上下文,例如类别和子类别到所有页面,而无需发送所有视图。 TIA
【问题讨论】:
我想知道是否有任何方法可以为 django 中的所有页面发送默认上下文,例如无论其他上下文如何,用户总是传递给模板,对于我的特殊情况,我想为导航栏发送上下文,例如类别和子类别到所有页面,而无需发送所有视图。 TIA
【问题讨论】:
您可以通过创建上下文处理器来实现这一点。在任何应用程序中创建一个 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(),
}
将此行添加到 settings.py 中的 TEMPLATES 以调用创建的上下文处理器
'OPTIONS': {
'context_processors': [
....
'yourAppName.context_processors.add_variable_to_context',
....
],
},
现在您可以在 base.html
中调用您创建的上下文字典【讨论】: