生成动态CSS

时间:2010-08-28 05:59:32

标签: css django dynamically-generated

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

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

然而,将CSS作为视图提供似乎会导致不断请求的文件中的大量开销,因此这可能不是一个好的解决方案。

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

3 个答案:

答案 0 :(得分:15)

  

然而,将CSS作为视图提供似乎会导致不断请求的文件中的大量开销,因此这可能不是一个好的解决方案。

如果你要生成一次CSS怎么办?

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

答案 1 :(得分:5)

通过视图动态地执行CSS,但使用激进的caching以便快速加载。

答案 2 :(得分:0)

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

我还没有尝试过,但接缝是一个解决方案。