2008-11-04 15 views
107

Ich erstelle meine Anwendung mit Django und frage mich, wie ich Django dazu bringen kann, meine CSS-Datei zu verwenden. Welche Einstellungen muss ich machen, damit Django die CSS-Datei sehen kann?Wie verwende ich CSS in Django?

NB: Auf einem lokalen Rechner

Antwort

48

Wenn Sie den Entwicklungsserver verwenden folgen die django project's how-to guide for managing static files einrichten, Ihre URL dann Sie Mediendateien in der Vorlage Referenz - sagen wir, ein Bild innerhalb eines Bildordner von /site_media/images/foo.gif.

+24

Nur eine kurze Notiz zu diesen Django-Dokumenten - stellen Sie sicher, dass Sie die Dokumente für die Version von Django auswählen, die Sie verwenden. Dinge scheinen sich zwischen den Versionen in Bezug auf statische Dateien stark verändert zu haben. –

+3

@Sam hat einen tollen Punkt. Ich konnte statische Dateien für das Leben von mir nicht herausfinden. dann ändere Django-Version installiert, und voila. Das war buchstäblich alles, was ich tun musste, weil ich anscheinend Dokumente für die falsche Version anschaute. –

12

Welche Einstellungen muss ich Django die CSS-Datei tun, um?

Keine.

Stellen Sie sicher, dass Ihre Vorlage die CSS-Datei enthält (wie es Standard-HTML tut) und legen Sie die CSS-Datei auf dem Medienserver ab.

Um zu verdeutlichen: Mit Django wird dringend empfohlen, dass Sie alle Ihre Medien (alles, was nicht dynamisch HTML ist) von einer anderen Serverinstanz aus bedienen. Wie Sie das implementieren, liegt ganz bei Ihnen, aber die meisten Leute erstellen eine Subdomain.

+2

Hallo, Oli. Ich weiß, dass dieser Beitrag fast 3 Jahre alt ist, aber ist dies immer noch der beste Weg, CSS mit Django-Vorlagen zu verknüpfen? Es scheint, als ob es am einfachsten wäre, css einfach mit einer ABS-URL wie static.example.com zu verknüpfen und einfach alle statischen Dateien in dieser URL zu speichern. – cp3

36

Allgemeiner ausgedrückt, fragen Sie, wie Sie eine statische Datei von Django bereitstellen können. Wenn Sie unter Apache laufen lassen, sollten Sie http://docs.djangoproject.com/en/dev/howto/deployment/modpython/

lesen Wenn Sie den Entwicklungs-Server ausgeführt werden (zum Beispiel auf dem Laptop), lesen http://docs.djangoproject.com/en/dev/howto/static-files/

Sie beachten Sie den großen, fetten Haftungsausschluss in Bezug auf dem Django-Entwicklungsserver :

  • Die Verwendung dieses Servers ist ineffizient und unsicher.
  • Verwenden Sie dies nicht in einer Produktionsumgebung.
  • Verwenden Sie dies nur für die Entwicklung.
+0

"Verwenden Sie dies nicht in einer Produktionsumgebung." Macht es Ihnen etwas aus? – Chris

+0

@Chris: Sie haben Recht, die Aussage war ein bisschen mehrdeutig. Ich habe mich auf den Django-Entwicklungsserver bezogen. Obwohl ich es einige Male in unserer Produktionsstätte ausgeführt habe, war es nur für kurze Zeit, während es knorrige Probleme behob. –

+0

Danke zur Verdeutlichung, ich habe mir meine Django-Einsätze angeschaut, die auf Apache laufen und mich fragen, was ich falsch gemacht habe. :) – Chris

0

Nun, der einfachste Weg, CSS mit Django zu verwenden, ist, es als statische Dateien zu Ihren Vorlagen hinzuzufügen.

Aber es ist ein bisschen wie Ajax, ich habe nichts gefunden, das sagt, wie man es in einer Standard-Weise einbeziehen kann.

Es gibt ein css-compressor Modul für Django, wenn Sie seine Größe optimieren möchten.

13

Das hat mir auch eine Zeit lang Probleme bereitet (404 Fehler nicht gefunden). Das fehlende Stück war für mich das STATICFILES_DIRS Tupel in settings.py zu bearbeiten, um mir dies:

STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static". 
    # Always use forward slashes, even on Windows. 
    # Don't forget to use absolute paths, not relative paths. 
    os.path.join(os.path.dirname(__file__),'media').replace('\\','/'), 
) 

Diese nahm dann meine CSS-Dateien in einem Ordner namens ‚Medien‘ auf, die auf der obersten Ebene meines django war Projekt.

Ich hatte auch:

MEDIA_ROOT = '' 
MEDIA_URL = '' 
STATIC_ROOT = '' 
STATIC_URL = '/media/' 

(stellen Sie sicher, das führende / oben in STATIC_URL haben)

Natürlich, wie oben gesagt, müssen Sie die CSS-Datei haben, richtig von Ihrem html enthalten Dateien. Ich hatte:

<link href="{{ STATIC_URL }}css/ea_base.css" rel="stylesheet" type="text/css" media="screen" /> 
+0

Endlich eine klare, einfache und elegante Lösung. Funktioniert gut mit Django 1.5. –

+0

# Verwenden Sie immer Schrägstriche, auch unter Windows. '.replace ('\\', '/')' ist nicht notwendig. – mak