我想在Django模板的每个页面的底部添加一个完整的类别列表(每个类别是一个模型)。我希望它能够自动生成。我也不必从每个视图中提供类别列表。
是否有正确的方法来执行此操作,以便我不必每次都将其提供给模板?
答案 0 :(得分:3)
你可以
撰写自定义模板代码:
使用inclusion tag可以提取所有类别并在模板中显示。在您的基本模板中包含此模板标记。
from django import template
register = template.Library()
from app.models import Category
@register.inclusion_tag("footer.html")
def footer():
categories = Category.objects.all()
return {"categories": categories}
这可能是你想要做的最好的选择。
使用自定义上下文处理器:
Create a function可以提取所有类别,并在所有网页的模板上下文中提供这些类别。
答案 1 :(得分:2)
创建template tag将该标记添加到基本模板(或具有公共页脚的任何模板)。