我无法使用block.super以干燥的方式实现django_breadcrumbs。
我有一个模板"版本"用户可以通过以下两种方式之一访问:在家中,在这种情况下,用户可以看到所有版本,或者从模板"调查",在这种情况下,用户只能看到该调查的版本。 版本模板的面包屑看起来像这样,它们工作正常:
{% extends 'base.html' %}
{% load django_bootstrap_breadcrumbs %}
{% block breadcrumbs %}
{{ block.super }}
{% if slug %}
{% breadcrumb "Surveys" "surveys:index" %}
{% breadcrumb "Editions" "editions:index" slug=slug %}
{% else %}
{% breadcrumb "Editions" "editions:index" %}
{% endif %}
{% endblock %}
对于挂起版本模板的网页,会出现令人失望的情况。我希望通过扩展该页面并使用block.super,我会根据版本的来源继承正确的面包屑。但即使我希望使用Surveys / Editions面包屑,我也只能获得Editions面包屑。 这是模板"创建"这就是"版本":
{% extends 'editions/index.html' %}
{% load bootstrap3 %}
{% load django_bootstrap_breadcrumbs %}
{% block breadcrumbs %}
{{ block.super }}
{% breadcrumb "Create" "editions:create" %}
{% endblock %}
我总是可以在该模板中添加另一个if:else:但我宁愿只从前一个模板继承if:else :.什么是我不明白?我是否需要将slu to传递回super:block或者什么东西?如果不重复相同的if:else:在子模板中,我该怎么做?实际上,即使使用新的if:else:?
,我将如何做到这一点感谢
约翰
答案 0 :(得分:0)
我最好的猜测是你渲染第二个模板而不传递slug
变量。您的继承是正确的,但是当父(或超级)模板使用slug
变量时,它呈现的内容取决于变量的内容。因此,如果没有传递名为slug
的变量,您将始终获得if语句的else部分。
因此,解决方案似乎很简单:在触发模板渲染时将slug
变量添加到context参数中。