django 管理模板中 block.super 之后的“仪表板”字是啥

Posted

技术标签:

【中文标题】django 管理模板中 block.super 之后的“仪表板”字是啥【英文标题】:What is 'dashboard' word after block.super in django admin templatedjango 管理模板中 block.super 之后的“仪表板”字是什么 【发布时间】:2017-10-20 14:42:36 【问题描述】:
% block extrastyle % block.super 
    <link rel="stylesheet" type="text/css" href="% static "admin/css/dashboard.css" %" />
% endblock %

% block bodyclass % block.super  dashboard% endblock %

块之间的“仪表板”字是什么?它有什么作用? 我尝试删除它,结果是'它导致管理模板中的表格混乱。

【问题讨论】:

【参考方案1】:

而不是覆盖子模板中% block bodyclass % 的内容 - 这是默认行为 - 在子模板的此块内添加 block.super 允许您保留此块的内容与父模板并添加其他内容。请参阅here 示例。 在您的情况下,它只是将 CSS 类添加到您的 body html 标记以进行自定义样式化。

【讨论】:

【参考方案2】:

这看起来django的基础模板有一个名为bodyclass的模板块,继承的模板是添加css类dashboard

你的模板搞砸的原因是你的项目在这个类上有 CSS 定义。

您可以在django templates and the inheritance structure here 上阅读更多内容。

验证这一点的另一种方法是在浏览器上检查生成的 HTML 源代码。您会注意到dashboard 类在(看起来是)body 类上的位置及其相关的 CSS 规则。

因此,当您删除 dashboard - CSS 规则不会应用于正文,因此结果

【讨论】:

实际上我在第一行包含了完整的代码,其中有一个 css 链接标签,但 *** 删除了它'我认为它可能是它所指的dashboard.css 文件名'但是不确定....无论如何感谢您的回答 不,不是css文件名。这是您将在dashboard.css 文件中看到的类定义。如果您打开 css 文件,您会看到类似 .dashboard 的内容 - 它为您的 HTML 元素提供 CSS 规则。 你的意思是 .dasboard 将在没有定义元素的情况下工作而没有 dasboard 类? 没有。他们不会。你需要告诉 body 使用名为 Dashboard 的类。只有这样才会应用这些 CSS 样式。我想说的是 - 如果您将文件 dashboard.css 重命名为其他名称,并将链接引用更新为该名称,您的 css 仍然可以正常工作。它不依赖于文件名。不过,它确实取决于类名。 嗯,这是我遇到的另一个问题,我没有找到在整个管理模板中使用仪表板类的元素,这是 django admin 的默认设置......

以上是关于django 管理模板中 block.super 之后的“仪表板”字是啥的主要内容,如果未能解决你的问题,请参考以下文章

Django block.super 在特定情况下不起作用

flask 模板block super()的讲解

页脚块模板不会更新 django

如何在 Django 模板中实现面包屑?

django模板之继承标签extend和添加标签include

Django CMS page_attribute 回退到其他值?