【发布时间】:2014-04-16 05:36:36
【问题描述】:
如何使用 nav-global 进行导航并在 django 管理应用程序中隐藏面包屑。我已经找到了做到这一点的方法,但它们看起来很老套且有问题。我正在寻找一个干净可靠的解决方案。
无效的幼稚方法:
自定义 admin/base_site.html
{% extends "admin/base.html" %}
{% load i18n %}
{% block title %}{{ title }} | {% trans 'Django site admin' %}{% endblock %}
{% block branding %}
<h1 id="site-name">{% trans 'Django administration' %}</h1>
{% endblock %}
{% block nav-global %}Some links will go here...{% endblock %}
{% block breadcrumbs %}{% endblock %}
这不起作用,因为 django admin 中的模板(如扩展 base_site.html 的 change_list.html)将为面包屑定义内容,这将覆盖我在 base_site.html 中设置的任何内容。
解决方案 1:CSS
使用 extrastyle 块将以下 css 添加到管理员。这可行,但面包屑仍会生成并出现在 HTML 源代码中。这感觉很hacky。
.breadcrumbs {
display: none;
}
解决方案 2:覆盖 base.html
覆盖 base.html 并删除面包屑块。孩子们会尝试定义它,但它永远不会存在,因此它永远不会被渲染。这也似乎是一个黑客。覆盖 base.html 也不是一个好主意,因为每个 Django 版本都可以对 base.html 进行许多更改,并且管理应用程序可能会在版本之间中断。
【问题讨论】: