如何使用navglobal导航并隐藏django管理应用程序中的breadcrumb。我已经找到了一些方法,但它们看起来既老套又有问题。我在找一个干净可靠的解决方案。在
不起作用的天真方法:
自定义管理员/基地_网站.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管理中的模板喜欢更改_列表.html延伸基地_网站.html将为breadcrumbs定义内容,它将覆盖我在base中设置的任何内容_网站.html. 在
解决方案1:CSS
使用extrastyle块向admin添加以下css。这是可行的,但是面包屑仍然会生成并出现在HTML源代码中。这让人觉得恶心。在
^{pr2}$解决方案2:覆盖基本.html
覆盖基本.html移除面包屑块。孩子们会尝试定义它,但它从未存在过,所以它永远不会被渲染。这看起来也像是黑客攻击。这也不是个好主意基本.html因为每个Django版本都可以对基本.html管理应用程序可能会在发布之间中断。在
扩展要呈现空面包屑块的所有模板。你的第一次尝试(你说不起作用)会起作用的,只需扩展其他模板。喜欢变化_列表.html公司名称:
改变_表单.html公司名称:
^{pr2}$同样适用于:
在登录.html以及索引.html有一个空的面包屑块。在
缺点是模板需要应用于每个应用程序。这意味着重复的模板。如果您想在整个项目范围内使用单个模板,那么最终会遇到其他问题:复制完整的原始模板或让模板扩展
/path/to/site-packages/django/contrib/admin/templates/template_name.html
。在使用CSS。您也可以隐藏app_标签,它是第二个子项。在
要避免递归问题:
安装django apptemplates
将模板加载器添加到设置.py. 如果使用Django>;=1.8,请将其添加到TEMPLATES设置(more details in the doc)中。
现在可以通过在extends标记中添加
app_name:
来重写模板:相关问题 更多 >
编程相关推荐