Django 动态 CSS 实现

2 投票
1 回答
2540 浏览
提问于 2025-04-16 17:43

我有一个小博客应用,我想在管理页面能更改样式(不一定是所有样式)。在Django项目中,动态加载样式的“正确”方式是什么呢?

我自己的想法是:

  • 通过Python文件输入输出编辑CSS文件
  • 从数据库构建CSS文件

不过这两种方法都有严重的缺点。谢谢你们提前给出的解决方案。

补充:我更希望得到一些不是Django应用的想法 :)

1 个回答

1

正确的做法是,在最上层的div(或者直接在body标签里)定义一个类,这个类会决定整个页面的主要样式。页面里所有可以设置样式的元素都会通过一种叫做“层叠”的方式,继承这个主要样式:

.master-default {
    color: black;
}
.master-default .bordered {
    border: green;
}
.master-blue {
    color: blue;
}
.master-blue .bordered
    border: yellow;
}

接下来,你的管理界面就可以让用户选择这个最上层的主要样式,然后你可以在你的基础模板中使用这个样式:

<div id="master" class="{{ userprofile.master_style }}">
    <div class="bordered">Border colour will vary according to master style</a>
</div>

等等。

撰写回答