DJango 1.8 在子模板上使用完全不同的 CSS

Posted

技术标签:

【中文标题】DJango 1.8 在子模板上使用完全不同的 CSS【英文标题】:DJango 1.8 use completely different CSS on child template 【发布时间】:2016-11-19 00:07:22 【问题描述】:

我想在 DJango 模板中做一些事情。我正在将 Materialize CSS 框架用于一个带有菜单的侧边栏,它只有一些显示 django 表单的视图的链接,并且该菜单是我的“base.html”,所以它是一个父模板。但是我有一个问题,我不想在我的子模板上使用 Materialize CSS 表单类,我想使用完全不同的东西,因为对于我的应用程序来说,物化似乎让用户感到困惑。

我试过这个: Django Templates: Use different css for pages

它让我可以对 CSS 进行一些更改,但我想完全删除父模板 CSS 并在我的子模板(表单)中只使用特定的 CSS。或者使用只影响父模板,不影响子模板的 CSS。

编辑: 阅读 cmets 以获得解决方案。这完全回答了我一开始写的内容,但我认为我的问题并不完整。我一直在寻找类似于 ASP.NET 母版页的解决方案,母版页有自己的 CSS,这不受 WebForm CSS(子模板)的影响,它们是独立的。在 DJango 中,如果您在子模板上覆盖父模板 CSS,则父模板将受到影响。现在我的菜单看起来很糟糕哈哈。但现在我有一个提示,只覆盖我需要的 css 类。

【问题讨论】:

您可以将您的css 链接包含在% block % 中的base.html 中,并且只需覆盖您不需要的位置(否则父级css 将用作后备)。 完全删除父模板 CSS - 在 % block css %<link_to_all_css>% endblock % 中添加所有 css,并在子模板中使用您所需的该模板的 css 覆盖它。 [否则父母的 css 将被用作其他不覆盖它的孩子的后备]。 @KapilSachdev 你告诉我的非常有用,谢谢 欢迎。我的回答是基于这样一个事实,即 base.html 不仅要扩展 CSS,而且还有更多的东西。这就是模板继承的用途 - 使内容可重用并覆盖应该更改的内容。 @KapilSachdev 我找到了我需要覆盖的 css 规则,并使用 !important 来确保,现在一切正常 【参考方案1】:

不要使用父基础模板扩展您的子模板。 在您的子模板中不包含此语句:

% extends "<base-file-name>.html" %

【讨论】:

以上是关于DJango 1.8 在子模板上使用完全不同的 CSS的主要内容,如果未能解决你的问题,请参考以下文章

Django 1.8 UpdateView 生成 405 错误和空白模板

Django 第四篇

Django 在子模板中扩展公共变量或块

Django是不是可以在子模板中的块外写入文本

Django 1.8 忽略 DIRS,找不到模板

在 Django 1.8 中覆盖现有的模板标记方法