Domanda

Nei template di django, è comune fare quanto segue:

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

Come lo faresti in un file CSS che non è servito come modello?

.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? */
}

Ho bisogno della possibilità di servire i miei file dal sottodominio multimediale o durante il lavoro offline e servirli direttamente come una vista statica django. Ma i file CSS sono un problema poiché non vengono elaborati come modelli e non posso usare la variabile di contesto MEDIA_URL .

Qual è la soluzione?

Modifica: Dovrei notare che il problema sorge poiché i miei file multimediali statici si trovano in realtà su un sottodominio multimediale separato, , negando così l'uso di percorsi relativi. Capito, grazie!

È stato utile?

Soluzione

Da dove viene servito il tuo file css? Questo di solito non è un problema come una struttura multimediale comune come:

media/
    images/
    css/
    js/

(o simile) consente percorsi relativi di file per immagini, ad esempio:

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

Se non si è pronti a modificare la struttura della cartella multimediale per adattarsi ai percorsi dei file relativi, è possibile che non si abbia altra alternativa che sovrascrivere le dichiarazioni CSS all'interno del modello, utilizzando un file CSS secondario quando si è offline:

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

Naturalmente la prima opzione è molto più ordinata.

Altri suggerimenti

Scusa, non ti piacerà la risposta.

Ho lo stesso problema:

Non esiste un modo semplice per farlo con file CSS forniti staticamente.

Cosa faccio:

  • server di debug, lavoro locale, media servito localmente
  • il server di produzione è ospitato da qualche parte con supporti multimediali su Amazon S3
  • Il file settings.py imposta automaticamente MEDIA_URL (DEBUG, ecc.) tramite il controllo del nome host (per differenziare la produzione rispetto a local / home / debug)
  • Tutti i file HTML hanno collegamenti CSS con {{MEDIA_URL}} (+ RequestContext contesti per le visualizzazioni)
  • Mi piacciono i nomi di percorso assoluti, quindi un " update_s3 " script: (1) modifica ogni file CSS che è temporaneamente da correggere "url (" / media" a "url (" s3.mydomain.com/media" e (2) aggiorna / carica la mia directory / media su Amazon S3

Vado quindi in produzione e faccio un aggiornamento svn & amp; tocca il file WSGI & amp; convalidare

L'uso dei percorsi relativi (per i file di immagine) nei file CSS non è un'opzione praticabile per te?

Se si desidera utilizzare le direttive del modello in un file, perché non viene pubblicato tramite un modello?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top