【发布时间】:2014-12-20 00:15:44
【问题描述】:
我在使用 block.super 以 DRY 方式实现 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,我会根据版本的来源继承适当的面包屑。但即使我希望得到调查/版本面包屑,我也只会得到版本面包屑。 这是挂在“版本”之外的“创建”模板:
{% extends 'editions/index.html' %}
{% load bootstrap3 %}
{% load django_bootstrap_breadcrumbs %}
{% block breadcrumbs %}
{{ block.super }}
{% breadcrumb "Create" "editions:create" %}
{% endblock %}
我总是可以在该模板中添加另一个 if: else:,但我宁愿只从前一个模板继承 if: else:。什么是我不明白的?我是否需要将蛞蝓传回超级:块或其他东西?如果:否则:在子模板中,我将如何做到这一点而不重复相同的操作?确实,即使使用新的 if: else: 我该怎么做?
谢谢
约翰
【问题讨论】: