在django使用block.super扩展面包屑

在django使用block.super扩展面包屑,django,templates,Django,Templates,我无法使用block.super以干式方式实现django_面包屑 我有一个模板“版本”,用户可以通过以下两种方式之一访问:要么从家中(在这种情况下,用户可以看到所有版本),要么从模板“调查”,在这种情况下,用户只能看到该调查的版本。 editions模板的面包屑如下所示,工作正常: {% extends 'base.html' %} {% load django_bootstrap_breadcrumbs %} {% block breadcrumbs %} {{ block.supe

我无法使用block.super以干式方式实现django_面包屑

我有一个模板“版本”,用户可以通过以下两种方式之一访问:要么从家中(在这种情况下,用户可以看到所有版本),要么从模板“调查”,在这种情况下,用户只能看到该调查的版本。 editions模板的面包屑如下所示,工作正常:

{% 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,可以根据版本的来源继承适当的面包屑。但我只得到过面包屑版本,即使我希望得到调查/面包屑版本。 以下是挂起“编辑”的模板“创建”:

我总是可以在该模板中添加另一个if:else:,但我更愿意从上一个模板继承if:else:。我不明白是什么?我需要把子弹传回超级:积木还是什么?如果不在子模板中重复相同的if:else:,我将如何做到这一点?事实上,即使有一个新的if:else:

谢谢


John

我的最佳猜测是,在不传递
slug
变量的情况下渲染第二个模板。您的继承是正确的,但是由于父(或超级)模板使用
slug
变量,它呈现的内容取决于变量的内容。因此,如果没有传递名为
slug
的变量,您将始终获得if语句的else部分

因此,解决方案似乎非常简单:在触发模板渲染时,将
slug
变量添加到上下文参数中

{% extends 'editions/index.html' %}
{% load bootstrap3 %}
{% load django_bootstrap_breadcrumbs %}
{% block breadcrumbs %}
    {{ block.super }}
    {% breadcrumb "Create" "editions:create" %}
{% endblock %}