Python 如何在Django管理中删除面包屑
如何在django管理应用程序中使用导航全局导航和隐藏面包屑。我已经找到了这样做的方法,但它们看起来很老套,而且有问题。我正在寻找一个干净可靠的解决方案 不起作用的天真方法: 自定义管理员/base_site.htmlPython 如何在Django管理中删除面包屑,python,django,Python,Django,如何在django管理应用程序中使用导航全局导航和隐藏面包屑。我已经找到了这样做的方法,但它们看起来很老套,而且有问题。我正在寻找一个干净可靠的解决方案 不起作用的天真方法: 自定义管理员/base_site.html {% extends "admin/base.html" %} {% load i18n %} {% block title %}{{ title }} | {% trans 'Django site admin' %}{% endblock %} {% block bran
{% 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 %}
解决方案2:覆盖base.html
重写base.html并删除breadcrumbs块。孩子们将尝试定义它,但它从不存在,因此它永远不会被渲染。这看起来也像是一个黑客。覆盖base.html也不是一个好主意,因为每个Django版本都可以对base.html进行许多更改,并且管理员应用程序可能会在两个版本之间中断。扩展所有要呈现空面包屑块的模板。您的第一次尝试(您说不起作用)将起作用,只需扩展其他模板即可。如change_list.html:
{% extends "admin/change_list.html" %}
{% block breadcrumbs %}
{% endblock %}
更改\u form.html:
{% extends "admin/change_form.html" %}
{% block breadcrumbs %}
{% endblock %}
同样适用于:
- 500.html
- app_index.html
- 更改密码.html
- 删除_confirmation.html
- 删除所选内容。\u confirmation.html
- 无效的\u setup.html
- object_history.html
缺点是每个应用程序都需要应用模板。这意味着重复的模板。如果你想在整个项目范围内使用单个模板,那么你最终会遇到其他问题:复制完整的原始模板,或者让模板扩展
/path/to/site packages/django/contrib/admin/templates/template_name.html
使用CSS。您还可以隐藏第二个子应用程序标签
.breadcrumbs>ul li:nth-child(2),
#grp-breadcrumbs>ul li:nth-child(2) {
display:none;
}
要避免递归问题,请执行以下操作:
pip install django-apptemplates
app\u name:
来覆盖模板:
{% extends "admin:admin/change_form.html" %}
{% block breadcrumbs %}
{% endblock %}
这不管用。试试看。您将得到一个最大递归深度超出错误。因为admin/change\u list.html正在尝试扩展admin/change\u list.html。您还错过了一些模板。总共有11个必须被覆盖。它们是:500.html app_index.html auth/user/change_password.html change_form.html change_list.html delete_confirmation.html delete_selected_confirmation.html index.html无效_setup.html login.html object_history.html使用change_form将其删除。它起作用了。该模板位于应用程序文件夹中。我猜你想让模板活得更高,所以它们是项目范围内的。我可以想象Django的跑步圈,但这在(2009年)之前是可能的:幻灯片36。从那以后发生了什么变化?模板加载器?没错。如果你为每个应用程序都这么做,它就会起作用。尽管如此,这将是大量的重复,因为它不是在项目级别的一个地方。
{% extends "admin:admin/change_form.html" %}
{% block breadcrumbs %}
{% endblock %}