Come si usano i CSS in Django?


110

Sto creando la mia applicazione usando Django e mi chiedo come posso fare in modo che Django usi il mio file CSS? Quali impostazioni devo fare per far vedere a Django il file css?

NB: su una macchina locale

Risposte:


48

Se stai utilizzando il server di sviluppo, segui la guida pratica del progetto django per la gestione dei file statici per configurare i tuoi URL, quindi fai riferimento ai tuoi file multimediali nel modello, ad esempio un'immagine all'interno di una cartella di immagini da /site_media/images/foo.gif.


25
Solo una breve nota su quei documenti di Django: assicurati di selezionare i documenti per la versione di Django che stai utilizzando. Le cose sembrano essere cambiate molto tra le versioni per quanto riguarda i file statici.
— Sam Starling

3
@ Sam ha un ottimo punto. non riuscivo a capire i file statici per la vita di me. quindi, cambia la versione di django installata e voilà. quello era letteralmente tutto quello che dovevo fare perché apparentemente stavo guardando i documenti per la versione sbagliata.
— Josh Brown

36

Più in generale, stai chiedendo come servire un file statico da Django. Se stai utilizzando Apache, dovresti leggere http://docs.djangoproject.com/en/dev/howto/deployment/modpython/

Se stai utilizzando il server di sviluppo (ad esempio, sul tuo laptop), leggi http://docs.djangoproject.com/en/dev/howto/static-files/

Prendi nota del grande e grosso disclaimer relativo al server di sviluppo Django:

  • L'utilizzo di questo server è inefficiente e insicuro.
  • Non utilizzarlo in un ambiente di produzione.
  • Usalo solo per lo sviluppo.

"Non utilizzarlo in un ambiente di produzione." Ti dispiace approfondire questo argomento?
— Chris

@ Chris: hai ragione, l'affermazione era un po 'ambigua. Mi riferivo al server di sviluppo Django. Anche se l'ho eseguito alcune volte sul nostro sito di produzione, è stato solo per brevi periodi di tempo durante il debug di problemi nodosi.
— Peter Rowell

Grazie per il chiarimento, stavo guardando le mie distribuzioni django in esecuzione su Apache chiedendomi cosa avessi fatto di sbagliato. :)
— Chris

1
Bello. Mi piacciono i 3 elementi che dicono la stessa cosa in modi diversi. Grazie per l'avviso.
— KobeJohn

13
Adoro le persone che arrivano 4,5 anni dopo che una risposta è stata pubblicata e la votano per difetto. Mi chiedo se sapessero cosa fosse Django nell'11 / 08 ... probabilmente no. Non sono i punti di rep che mi arrivano, è la combinazione mostrata di ignoranza e arroganza con solo un accenno di essere troppo tardi alla festa. Mi chiedo come valuterebbero i miei post in comp.lang.c nel, diciamo, 1987? Meglio non chiedere.
— Peter Rowell

13

Questo ha causato problemi anche a me per un po '(404 errori non trovati). La parte mancante per me era modificare la STATICFILES_DIRStupla in settings.py per darmi questo:

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

Questo ha poi raccolto i miei file CSS in una cartella chiamata "media" che era al livello più alto del mio progetto django.

Ho avuto anche:

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

(assicurati di avere il comando /sopra STATIC_URL)

Ovviamente, come detto sopra, è necessario che il file CSS sia correttamente incluso dai file html. Avevo:

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

Finalmente una soluzione chiara, semplice ed elegante. Funziona bene con django 1.5.
— pbarill

# Usa sempre le barre, anche su Windows. .replace('\\','/')non è necessario.
— mak

12

Quali impostazioni devo fare per far vedere a Django il file css?

Nessuna.

Assicurati che il tuo modello includa il file CSS (come lo standard HTML fa) e metti il ​​file CSS sul server multimediale.

Per chiarire: con Django si consiglia vivamente di servire tutti i media (tutto ciò che non è HTML dinamico) da un'istanza del server diversa. Il modo in cui implementarlo dipende completamente da te, ma la maggior parte delle persone crea un sottodominio.


2
Ciao, Oli. So che questo post ha quasi 3 anni, ma è ancora il modo migliore per collegare css a template django? Questo sembra che sarebbe il modo più semplice di collegare css a un URL abs come static.example.com e memorizzare tutti i file statici su quell'URL.
— cp3


0

Bene, il modo più semplice per usare css con django è aggiungerlo ai tuoi modelli come file statici.

Ma è un po 'come ajax, non ho trovato nulla che dica come includerlo in modo standard.

C'è un modulo css-compressor per django se vuoi ottimizzarne le dimensioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.