在我对django不熟悉之前已经写了很多python,并且到目前为止还喜欢它。
我以前的网络体验是在PHP中,为了使我的CSS易于维护,我使用php文件作为我的CSS并将其作为CSS内容类型提供。因此,我可以创建易于更改的变量,以使网站中的所有内容都发生变化。
e.g。 styles.php:
<?php header('Content-type: text/css');
$pink = '#91305f';
$green = '#a4ce39';
$black = '#000000';
$white = '#ffffff';
$std_font = "'Ruda', sans-serif";
$std_shadow = "text-shadow: 1px 1px 1px #000;";
$big_shadow = "text-shadow: 2px 2px 2px #000;";
$h_space = '10px';
?>
和...
html {
background-color:<?= $pink ?>;
color: <?= $green ?>;
font-family: <?= $std_font ?>;
}
所以,如果我想改变整个网站中黑色的含义,我只需要改变顶部的$ black =以及我所说的CSS中我所说的颜色的所有位置:;将会跟进。
我想在django中实现相同类型的东西,但无法弄清楚如何做到这一点。我想我可以使用视图在css中渲染模板,但不确定如何去做。是否像在我的视图中创建一个字典并将其传递给render_to_response然后在我的模板文件中引用它一样简单?
e.g。 views.py:
def style(request):
colours = {'pink' : '#91305f', 'green' : '#a4ce39'}
return render_to_response('styles.css', {'styles': colours},
context_instance=RequestContext(request))
然后,在templates / styles.css中:
html {
background-color:{{ styles.pink }};
color: {{ styles.green }};
}
这是一个可行的解决方案吗?如果是这样,似乎我将视图耦合到模板,但我无法弄清楚否则我将存储实现此目的所需的数据。
由于 亚伦
答案 0 :(得分:1)
你可以完全按照你说的做,所以从不在静态根目录的地方提供css,通过URL系统传递请求并将文件呈现为页面。这是所有帐户的一种非常低效的方法,尤其是如果您每页加载多个CSS文件。在这种情况下你可以做的是设置Web服务器无限期地缓存CSS文件,只更新你的命令,在这种情况下你将拥有静态CSS文件的所有速度优势和动态的所有可维护性那些。如果要为每个用户提供自定义CSS,那么该方法将不起作用。你可以做的最后一件事就是自己编写一个小解析器,它可以解析你创建的“meta-css”文件,你可以在这里定义一些变量,比如django模板,然后用你指定的变量替换它们并上传结果。 CSS作为静态文件提供。您当然可以使用django引擎来执行此操作,只需请求页面并将生成的文件复制到静态目录,此时它将成为apache缓存的手动版本。
答案 1 :(得分:1)
如果我正确理解您的问题,您希望能够轻松更改整个网站的布局,而无需编辑样式表。对我来说,听起来你不想使用内联样式和生成的CSS,而是使用SASS或LESS并使用变量来设计颜色:
答案 2 :(得分:0)
我不确定这是不是好方法。您可以将class
添加到要应用特定样式的元素。
无论如何,如果你想继续这个方法,你可以实现你的上下文处理器,默认情况下会添加这些变量。请参阅Writing your context processor