【问题标题】:Django Template / on which template I am and using IF for this templateDjango 模板/我在哪个模板上并为此模板使用 IF
【发布时间】:2013-09-15 23:57:03
【问题描述】:
有一个网站,我有 1 个 div 黑色矩形用作页脚,数据是从页脚内的数据库中提取的。
我想在我在 django 模板目录中创建的每个模板上显示此页脚,除了 INDEX.HTML 主页(模板)。如果我把它放到 BASE.HTML 中,它将无处不在,如果我将它传播到除 INDEX.HTML 之外的所有 20 个模板中,我将需要编辑每个模板以获取页脚中的数据,我不想这样做。我如何实现页脚显示在除 INDEX.HTML 之外的所有模板中,但仅使用一次来编辑页脚中的数据。是否有 django 命令或类似 IF template = index.html 隐藏页脚等类似逻辑或实现此目的的最佳方法是什么?
谢谢
【问题讨论】:
标签:
django
python-2.7
django-views
django-templates
【解决方案1】:
您可以为此使用block tag。
如果您发现自己在多个模板中复制了内容,这可能意味着您应该将该内容移动到父模板中的 {% block %}
更多documentation here
在base.html
{% block footer_content %}
{# contents here #}
{% endblock %}
在index.html
{% block footer_content %}
{# this overwrites the base footer_content to empty block #}
{% endblock %}
这将仅删除 index.html 中的内容,并在继承自 base.html 的所有其他页面上可用
现在,如果您希望向某些页面添加更多内容,
{% block footer_content %}
{{ block.super }}
{# more content here #}
{% endblock %}