2008-11-04 14 views
107

Sto creando la mia applicazione usando Django e mi sto chiedendo come posso fare in modo che Django usi il mio file CSS? Quali impostazioni devo fare per fare in modo che Django veda il file css?Come si usano i CSS in Django?

NB: Su una macchina locale

risposta

48

Se si utilizza il server di sviluppo seguire la django project's how-to guide for managing static files alla configurazione del URL, quindi fare riferimento si file multimediali nel modello - per esempio, un'immagine all'interno di una cartella di immagini da /site_media/images/foo.gif.

+24

Solo una breve nota su quei documenti Django - assicurati di selezionare i documenti per la versione di Django che stai utilizzando. Le cose sembrano essere cambiate molto tra le versioni rispetto ai file statici. –

+3

@ Sam ha un grande 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é a quanto pare stavo guardando i documenti per la versione sbagliata. –

12

Quali impostazioni ho bisogno di fare per rendere Django vedere il file css?

Nessuno.

Assicurarsi che il modello contenga il file CSS (come fa l'HTML standard) e inserire il file CSS sul media server.

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

+2

Ciao, Oli. So che questo post è vicino ai 3 anni, ma è ancora il modo migliore per collegare i CSS ai template di Django? Sembra che sarebbe il più semplice collegando semplicemente css a un URL abs come static.example.com e archiviando tutti i file statici in quell'URL. – cp3

36

Più in generale, si sta chiedendo come pubblicare un file statico da Django. Se si esegue sotto Apache, si dovrebbe leggere http://docs.djangoproject.com/en/dev/howto/deployment/modpython/

Se si esegue il server di sviluppo (ad esempio, su un computer portatile), leggere http://docs.djangoproject.com/en/dev/howto/static-files/

si noti la grande, dichiarazione di non responsabilità grasso per quanto riguarda il server di sviluppo Django :

  • L'utilizzo di questo server è inefficiente e non sicuro.
  • Non utilizzare questo in un'impostazione di produzione.
  • Utilizzare questo solo per lo sviluppo.
+0

"Non utilizzare questo in un'impostazione di produzione." Ti dispiace espandere questo? – Chris

+0

@Chris: hai ragione, la dichiarazione 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. –

+0

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

0

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

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

C'è un modulo css-compressor per django se si desidera ottimizzare le sue dimensioni.

13

Questo mi ha causato problemi anche per un po '(404 errori non trovati). Il bit mancante per me è stato quello di modificare il STATICFILES_DIRS tupla in settings.py di 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 poi prese i miei file CSS in una cartella chiamata 'media' che era al livello superiore del mio Django progetto.

Ho avuto anche:

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

(assicurarsi di aver leader / sopra STATIC_URL)

Ovviamente, come detto sopra, è necessario avere il file CSS correttamente incluso dal tuo html File. Ho avuto:

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

Infine, una soluzione chiara, semplice ed elegante. Funziona bene con Django 1.5. –

+0

# Utilizza sempre barre inverse, anche su Windows. '.replace ('\\', '/')' non è necessario. – mak

Problemi correlati