Pergunta

No Django modelos, é comum fazer o seguinte:

<img src="{{ MEDIA_URL }}/img/someImage.jpg">

Como você conseguir isso em um arquivo CSS que não é servido como um modelo?

.someClass {
    /* can't do this this */
    background: url("{{ MEDIA_URL }}/img/someImage.jpg");        
    /* either this */
    background: url("http://media.domain.com/img/someImage.jpg");
    /* or this */
    background: url("/django_static_media/img/someImage.jpg");
    /* can't do both... what to do? */
}

Eu preciso a capacidade de servir os meus arquivos a partir do subdomínio mídia, ou durante o trabalho offline e servi-los diretamente como uma visão django estática. Mas arquivos CSS são um problema, uma vez que não são processados ??como modelos e não posso usar a variável de contexto MEDIA_URL.

Qual é a solução?

Editar:. Devo observar que o problema surge desde os meus arquivos de mídia estáticos são na verdade localizado em uma sub-domínio de mídia separado, negando assim o uso de caminhos relativos Got it, thanks!

Foi útil?

Solução

Onde está o seu arquivo css servido a partir? Isso geralmente não é um problema como uma estrutura de mídia comum, tais como:

media/
    images/
    css/
    js/

(ou similar) permite caminhos de arquivos relativos para imagens, por exemplo:

background: url('../images/foo.png');

Se você não está preparado para mudar seus meios pasta estrutura para acomodar caminhos de arquivos relativos, você pode ter outra alternativa senão declarações CSS sobrescrever a partir do modelo, usando um arquivo css secundário quando off-line:

{% if DEBUG %}
    <link rel="stylesheet" href="{{ MEDIA_URL }}css/offline-mode.css" />
{% endif %}

É claro que a primeira opção é muito mais arrumado.

Outras dicas

Desculpe, você não vai gostar da resposta.

Eu tenho o mesmo problema:

Não há nenhuma maneira fácil de fazer isso com arquivos CSS serviu-estático.

O que eu faço:

  • servidor de depuração, o trabalho localmente, meios servido localmente
  • servidor de produção está hospedado em algum lugar comercial w / media on Amazon S3
  • settings.py arquivo auto define MEDIA_URL (DEBUG, etc.) através de cheque hostname (para a produção diferenciada vs. / home / debug local)
  • arquivos HTML todos têm links CSS com {{MEDIA_URL}} (+ RequestContext contextos para visitas)
  • Eu gosto de nomes de caminho absoluto, portanto, um script "update_s3": (1) altera cada arquivo css está temporariamente para correção 'url ( "/ media' para 'url (" s3.mydomain.com/media' e (2) Atualizações / uploads meu diretório / media para o Amazon S3

Eu, então, ir para a produção e fazer uma atualização SVN & tocar o arquivo WSGI e validar

Está usando caminhos relativos (por imagem arquivos) em seus arquivos CSS não é uma opção viável para você?

Se você quiser usar directivas de modelo em um arquivo, por que não é servido por meio de um modelo?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top