15

处理用户自定义样式的最佳方法是什么?作为我正在寻找的结果的一个例子,这就足够了:

body {
   color: {{ user.profile.text_color }};
}

但是,将 CSS 用作视图似乎会在不断请求的文件中产生大量开销,因此这可能不是一个好的解决方案。

用户无权访问 CSS 文件,我们必须假设他们没有 Web 开发知识。

4

3 回答 3

15

但是,将 CSS 用作视图似乎会在不断请求的文件中产生大量开销,因此这可能不是一个好的解决方案。

如果你只生成一次 CSS 会怎样?

  1. 默认 CSS 为:/common/css.css
  2. 成员自定义 CSS,现在<link />元素指向/user-specific/123.css?ts=123123123. 123当然是成员的标识符,ts参数包含时间戳 - 最后一次 CSS 修改的日期
  3. 确保您的 CSS 生成器设置了负责客户端缓存的正确 HTTP 标头
  4. 用户浏览器请求一个 CSS 文件 - 服务器用简单的标题回复304 Not Modified- 不需要任何脚本执行或内容下载
  5. 当成员修改他的 CSS 时,您只需更新ts- 再次只需要一个请求
于 2010-08-28T06:37:13.897 回答
5

像往常一样通过视图动态地执行 CSS,但使用积极的缓存以便快速加载。

于 2010-08-28T06:09:15.717 回答
0

你可以试试 django mediagenerato,实际上我读了这个 Q 并且我正在寻找像你一样的解决方案,然后我发现Django-mediagenerator

我还没有尝试过,但它似乎是一个解决方案。

于 2011-07-02T00:26:41.083 回答