Mit einem Django-variable in eine CSS-Datei
Ich versuche zu erstellen dynamische CSS-Datei mithilfe der Django-Template-engine oder mit anderen Mitteln.
Derzeit habe ich eine CSS-Regel, die wie folgt aussieht:
background-image: url('http://static.example.com/example.png');
Wo http://static.example.com
entspricht der STATIC_URL
Variablen in Python. Mit der Django-Template-engine, könnte ich theoretisch etwas schreiben wie dieses:
background-image: url('{{ STATIC_URL }}example.png');
Meine Frage ist, wie kann ich das nutzen die Django-Template-engine (oder andere Mittel) zu generieren, CSS dynamisch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie grundsätzlich zwei Optionen:
Dienen die CSS dynamisch, mit einem Eintrag in urls.py usw., so als wäre es eine HTML-Seite. Die Vorlage-Datei wird einfach mit CSS anstelle von HTML -, aber "normal" Django-template-syntax, etc.
Verknüpfung: Verweisen Sie Ihre Hintergrundbild mit einem relativen Pfad. Dies kann oder kann nicht möglich sein, für Ihre Umgebung, aber es ist eine bequeme Möglichkeit, eine statische CSS-Datei referenzieren unterschiedliche Wege, je nachdem, wo Sie gehostet ist.
user.css
- Datei, die meine Seiten verweisen, dass nicht eine Datei überhaupt jemals - ist es dynamisch generiert werden, jedes mal, wenn es angefordert wird. Ich dachte daran, einen zu erzeugen, und-cache, aber es wurde kein performance Grund, dies zu tun.Eine sehr gute Lösung ist hier die Verwendung django-Kompressor. Erstens, wenn Sie mit mehr als einer CSS-Datei, Kompressor ist zu helfen, verbessern die Ladezeiten, indem die Anzahl der Anfragen.
Nebeneffekt der Komprimierung /das verketten von Dateien ist, dass der Kompressor umschreiben der urls in der css-Datei, so dass Sie relativ referenziert werden statische Dateien (z.B. ../img/logo.png) werden automatisch vollständig qualifizierte urls, die statische Datei-url (z.B. http://static.example.com/img/logo.png).
Alternativ schreiben Sie benutzerdefinierte Filter zu erreichen, was Sie wollen, oder Sie können komprimieren Sie Ihre völlig statische CSS, und einige dynamische Teile in einer einzigen Datei (z.B. in der Basis einer layout-Datei):
Dies bedeutet auch, Sie nicht haben, um sorgen über die Effizienz, wie die css/js-Dateien generiert werden bei dem erstmaligen Zugang wird von einer Vorlage, die Sie benutzt, und Sie sind gespeichert als normale Dateien in Ihrem statischen Verzeichnis (dies ist konfigurierbar), so dass Sie diente als normale, statische Dateien.