2011-09-17 13 views
19

Sono confuso su file statici e file multimediali in django. Ho visto altrove che le persone lo usano in modo intercambiabile.django - quando dovrei usare media_root o static_root?

Quando dovrei usare media_root e quando devo usare static_root?

Se si dispone di immagini del sito, è necessario inserirlo in modo statico? E se ho delle immagini di prodotto, le metto nei media?

risposta

28

MEDIA_ROOT è la directory in cui vengono caricati i file e anche i file generati in cui sono memorizzati. Ad esempio, una delle mie app Django consente agli utenti di caricare immagini. In una delle classi modello, utilizzo il tipo ImageField da sorl-thumbnail con upload_to='%Y-%m'. Ogni volta che un utente carica un'immagine, il file viene memorizzato in MEDIA_ROOT/%Y-%m/ (con %Y sostituito con l'anno corrente e %m sostituito con il numero del mese corrente). Inoltre, quando sorl-thumbnail genera una miniatura per un'immagine caricata, posiziona la miniatura by default da qualche parte in MEDIA_ROOT/cache/.

STATIC_ROOT viene utilizzato per configurare la directory in cui sono posizionati gli asset statici. Ad esempio, i fogli di stile del sito, i file JavaScript e le immagini utilizzati nella progettazione di pagine Web sono i tipi di file che vanno in STATIC_ROOT. Se hai più app installate, ciascuna app che utilizza file statici può avere la propria directory di file statici. Si utilizza la funzione di gestione collectstatic (richiamata tramite python manage.py collectstatic) per copiare tutti i file statici delle app in STATIC_ROOT.

+0

grazie per la risposta. Ancora una domanda di follow-up. Cosa succede se ho ottenuto le immagini del prodotto? Dove dovrebbe andare? Gli amministratori possono caricarlo e devono essere visualizzati sul sito. –

+0

@ bash-: memorizzi i percorsi delle immagini del prodotto nel database? I file di ['ImageField'] (https://docs.djangoproject.com/en/dev/ref/models/fields/#imagefield) e [' FileField'] (https://docs.djangoproject.com/en/dev/ref/models/fields/# filefield) vai in 'MEDIA_ROOT', quindi in questo caso, sì, le immagini del prodotto vanno in' MEDIA_ROOT' (ma non è necessario caricarle su 'MEDIA_ROOT' a mano-tuo l'app dovrebbe farlo). Se si stanno mantenendo manualmente le immagini dei prodotti e le si fa riferimento nei tag '' sui modelli, le immagini del prodotto dovrebbero andare in 'STATIC_ROOT'. –

Problemi correlati