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.