2011-05-16 98 views
2

我有我的小博客应用程序,我希望能够从管理页面更改样式(不一定全部)。在django项目中实现动态样式加载的“正确”方式是什么? 我自己的想法:通过Python的文件I/O从数据库Django动态css实现

虽然这两种方案有严重的缺点

  • 构建css文件
  • 编辑CSS文件。 非常感谢您的解决方案。

    编辑:我宁愿不思路Django的应用程序:)

  • +0

    可能重复:http://stackoverflow.com/questions/3589661/generated-dynamic-css – DrTyrsa 2011-05-16 10:22:53

    +0

    就像渲染模板一样,渲染CSS也不是不可能的。你可以设置一个url,它将在参数中接收你想要的配置,并为那种情况生成css。你将拥有css模板,只需要补充它们即可。 less.js库也可能有用,请务必检查一下! – tiagoboldt 2011-05-16 10:26:13

    回答

    1

    “正确”的方式做,这将是在顶层div来定义一个类(甚至身体),这就决定了主该页面的风格。该页面中的所有样式化元素都通过级联的神奇继承了这种风格:

    .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> 
    

    +0

    但是这不会导致CSS爆炸?例如选择背景字体的边界... – Kukmedis 2011-05-16 10:37:02

    +0

    不一定 - 你可以实际做到这一点,以便默认的类也在那里,并且只覆盖你想要的,更具体的。 – 2011-05-16 10:55:08

    +0

    但说我20种不同的颜色,并想与20个不同的边界混合。最后,如果我想从全彩色幽灵中选择,该怎么办? – Kukmedis 2011-05-16 11:34:50