python - 如何在 Django 管理中删除面包屑

标签 python django

如何使用 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 中设置的内容。

方案一:CSS

使用 extrastyle block 将以下 css 添加到 admin。这有效,但面包屑仍然会生成并出现在 HTML 源代码中。这感觉很糟糕。

.breadcrumbs {
    display: none;
}

方案二:覆盖base.html

覆盖 base.html 并删除面包屑 block 。 children 会尝试定义它,但它从不存在,所以它永远不会被渲染。这也似乎是一个黑客。覆盖 base.html 也不是一个好主意,因为每个 Django 版本都可以对 base.html 进行许多更改,并且管理应用程序可能会在版本之间中断。

最佳答案

扩展所有要呈现空面包屑 block 的模板。您的第一次尝试(您说行不通)会起作用,只需扩展其他模板即可。比如 change_list.html:

{% extends "admin/change_list.html" %}
{% block breadcrumbs %}
{% endblock %}

change_form.html:

{% extends "admin/change_form.html" %}
{% block breadcrumbs %}
{% endblock %}

同样适用于:

  • 500.html
  • app_index.html
  • change_password.html
  • delete_confirmation.html
  • delete_selected_confirmation.html
  • invalid_setup.html
  • object_history.html

login.html 和 index.html 有一个空的面包屑 block 。

缺点是需要为每个应用程序应用模板。这意味着重复的模板。如果您想使用单个模板在整个项目范围内进行操作,您最终会遇到其他技巧:复制完整的原始模板或让模板扩展 /path/to/site-packages/django/contrib/admin/templates/template_name.html

关于python - 如何在 Django 管理中删除面包屑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22345527/

相关文章:

python - Heroku 在错误的目录中查找 Procfile

javascript - 仅获取维基百科摘要

python - 首次加载时,Recaptcha 2(又名 nocaptcha)不会在 Internet Explorer 8 上加载

python - Django 和 Matplotlib : signal only works in main thread

python - Django admin 中的间接内联

python - 如何在 Django 模板中进行数学运算?

django - 如何将 django-reversion 添加到使用 django 和 django-rest 框架开发的应用程序中

python - 将父前缀号码扩展到给定的子号码

python - 如何在核心处理程序中获取信息

python - 将 pandas 数据框列及其顺序保留在数据透视表中