Wie verwende ich CSS in Django?

110

Ich erstelle meine Anwendung mit Django und frage mich, wie ich Django dazu bringen kann, meine CSS-Datei zu verwenden. Welche Einstellungen muss ich vornehmen, damit Django die CSS-Datei sieht?

NB: Auf einem lokalen Computer

gath
quelle

Antworten:

48

Wenn Sie den Entwicklungsserver verwenden, befolgen Sie die Anleitungen des Django-Projekts zum Verwalten statischer Dateien zum Einrichten Ihrer URLs. Verweisen Sie dann auf Ihre Mediendateien in der Vorlage, z. B. ein Bild in einem Bildordner von /site_media/images/foo.gif.

Joe
quelle
25
Nur eine kurze Anmerkung zu diesen Django-Dokumenten - stellen Sie sicher, dass Sie die Dokumente für die von Ihnen verwendete Django-Version auswählen. In Bezug auf statische Dateien scheinen sich die Dinge zwischen den Versionen stark verändert zu haben.
Sam Starling
3
@ Sam hat einen tollen Punkt. Ich konnte keine statischen Dateien für mein Leben herausfinden. Ändern Sie dann die installierte Django-Version und voila. Das war buchstäblich alles, was ich tun musste, weil ich anscheinend in den Dokumenten nach der falschen Version gesucht habe.
Josh Brown
36

Allgemeiner ausgedrückt, fragen Sie, wie eine statische Datei von Django bereitgestellt werden soll. Wenn Sie unter Apache arbeiten, sollten Sie http://docs.djangoproject.com/en/dev/howto/deployment/modpython/ lesen.

Wenn Sie den Entwicklungsserver ausführen (z. B. auf Ihrem Laptop), lesen Sie http://docs.djangoproject.com/de/dev/howto/static-files/.

Beachten Sie den großen, fetten Haftungsausschluss bezüglich des Django-Entwicklungsservers:

  • Die Verwendung dieses Servers ist ineffizient und unsicher.
  • Verwenden Sie dies nicht in einer Produktionsumgebung.
  • Verwenden Sie dies nur für die Entwicklung.
Peter Rowell
quelle
"Verwenden Sie dies nicht in einer Produktionsumgebung." Stört es Sie, dies zu erweitern?
Chris
@ Chris: Du hast recht, die Aussage war etwas mehrdeutig. Ich bezog mich auf den Django-Entwicklungsserver. Obwohl ich es einige Male auf unserer Produktionsstätte ausgeführt habe, war es nur für kurze Zeiträume beim Debuggen knorriger Probleme.
Peter Rowell
Vielen Dank für die Klarstellung. Ich habe mir meine Django-Bereitstellungen angesehen, die auf Apache ausgeführt werden, und mich gefragt, was ich falsch gemacht habe. :)
Chris
1
Nett. Ich mag die 3 Punkte, die dasselbe auf unterschiedliche Weise sagen. Danke für die Warnung.
KobeJohn
13
Ich liebe Menschen, die 4,5 Jahre nach der Veröffentlichung einer Antwort kommen und sie ablehnen. Ich frage mich , ob sie überhaupt wusste , was Django war in 11/08 ... wahrscheinlich nicht. Es sind nicht die Wiederholungspunkte, die mich erreichen, es ist die gezeigte Kombination aus Ignoranz und Arroganz mit nur einem Hinweis darauf, dass ich zu spät zur Party komme . Ich frage mich, wie sie meine Beiträge zu comp.lang.c in 1987 bewerten würden. Besser nicht fragen.
Peter Rowell
13

Dies verursachte mir auch für eine Weile Probleme (404 keine Fehler gefunden). Das fehlende Bit für mich war, das STATICFILES_DIRSTupel in settings.py zu bearbeiten , um mir Folgendes zu geben:

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('\\','/'),
)

Dadurch wurden meine CSS-Dateien in einem Ordner namens "Medien" abgerufen, der sich auf der obersten Ebene meines Django-Projekts befand.

Ich hatte auch:

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

(Stellen Sie sicher, dass Sie die Führung /oben in habenSTATIC_URL )

Wie oben erwähnt, muss die CSS-Datei natürlich ordnungsgemäß aus Ihren HTML-Dateien enthalten sein. Ich hatte:

<link href="{{ STATIC_URL }}css/ea_base.css" rel="stylesheet" type="text/css" media="screen" />
Jacanterbury
quelle
Endlich eine klare, einfache und elegante Lösung. Funktioniert gut mit Django 1.5.
Pbarill
# Verwenden Sie auch unter Windows immer Schrägstriche. .replace('\\','/')ist unnötig.
Mak
12

Welche Einstellungen muss ich vornehmen, damit Django die CSS-Datei sieht?

Keiner.

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

Zur Verdeutlichung: Bei Django wird dringend empfohlen, dass Sie alle Ihre Medien (alles, was kein dynamisches HTML ist) von einer anderen Serverinstanz aus bereitstellen. Wie Sie das implementieren, liegt ganz bei Ihnen, aber die meisten Leute erstellen eine Subdomain.

Oli
quelle
2
Hallo Oli. Ich weiß, dass dieser Beitrag fast 3 Jahre alt ist, aber ist dies immer noch der beste Weg, um CSS mit Django-Vorlagen zu verknüpfen? Dies scheint die einfachste Möglichkeit zu sein, CSS mit einer abs-URL wie static.example.com zu verknüpfen und alle statischen Dateien unter dieser URL zu speichern.
cp3
0

Der einfachste Weg, CSS mit Django zu verwenden, besteht darin, es als statische Dateien zu Ihren Vorlagen hinzuzufügen.

Aber es ist ein bisschen wie Ajax, ich habe nichts gefunden, was sagt, wie man es auf normale Weise einbindet.

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

Roch
quelle