/ / django variables em css - posso usar templates - css, django, django-templates

variáveis ​​django em css - posso usar templates - css, django, django-templates

Tendo escrito muito python antes de ser muito novo no django, e amando até agora.

Minha experiência na web anterior está em PHP e em ordemPara tornar meu CSS mais fácil de manter, eu uso um arquivo php como meu CSS e sirvo como tipo de conteúdo CSS. Portanto, posso fazer variáveis ​​que podem ser facilmente alteradas para que tudo no site seja alterado.

por exemplo. 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";
?>

e...

html {
background-color:<?= $pink ?>;
color: <?= $green ?>;
font-family: <?= $std_font ?>;
}

então, se eu quiser mudar o que o preto significa em todo o meu site, eu apenas altero o $ black = no topo e todos os lugares no meu CSS onde eu disse que a cor:;

Eu quero alcançar o mesmo tipo de coisaDjango, mas não consigo descobrir como fazê-lo. Eu estou pensando que eu poderia usar uma visão para processar um modelo em CSS, mas não tenho certeza de como fazer isso. É tão simples como criar um dict na minha opinião e passá-lo para render_to_response, em seguida, referindo-se a ele no meu arquivo de modelo?

por exemplo. views.py:

def style(request):
colours = {"pink" : "#91305f", "green" : "#a4ce39"}
return render_to_response("styles.css", {"styles": colours},
context_instance=RequestContext(request))

então, em templates / styles.css:

html {
background-color:{{ styles.pink }};
color: {{ styles.green }};
}

Esta é uma solução viável? Nesse caso, parece que estou acoplando a exibição ao modelo, mas não consigo descobrir onde armazenar os dados necessários para conseguir isso.

obrigado Aaron

Respostas:

1 para resposta № 1

Se eu entendi sua pergunta corretamente, você querpara poder alterar facilmente o layout de todo o site, sem editar todas as suas folhas de estilo. Para mim, parece que você não quer usar estilos embutidos e gerou CSS, mas usa SASS ou LESS e usa as variáveis ​​para desenhar as cores:


1 para resposta № 2

Você pode fazer exatamente o que você diz, então sirva cssde algum lugar que não esteja na raiz estática, passe solicitações através do sistema de URLs e renderize o arquivo como uma página. Essa abordagem é bastante ineficiente para todas as contas, especialmente se você estiver servindo vários arquivos CSS por carregamento de página. você poderia fazer nesse caso configurar o servidor da Web para armazenar em cache os arquivos CSS indefinidamente e atualizar apenas em um comando seu, nesse caso você teria todas as vantagens de velocidade dos arquivos CSS estáticos e toda a capacidade de manutenção dos arquivos dinâmicos. . Essa abordagem não funcionará se você quiser servir CSS customizado para cada usuário. A última coisa que você poderia fazer seria escrever um pequeno analisador que possa analisar um arquivo "meta-css" que você cria onde você define uma carga de variáveis. como um modelo de django, ele substitui aqueles com variáveis ​​que você especifica e carrega o CSS resultante para ser servido como um arquivo estático.Você poderia, claro, usar o mecanismo do django para fazer isso, apenas solicitando a página e copiando o arquivo produzido para o diretório, ponto em que se torna uma versão manual do cache do apache.


0 para resposta № 3

Eu não tenho certeza se este é um bom método ou não. Provavelmente você pode adicionar class ao elemento para o qual você deseja que um estilo específico seja aplicado.

De qualquer forma, se você quiser continuar com este método, você pode implementar seu processador de contexto, que irá adicionar essas variáveis ​​por padrão. Referir Escrevendo seu processador de contexto