9

Non sono sicuro di quale sia la differenza, sembra che entrambi stiano funzionando. Ho cercato su Google e sembra che siano praticamente la stessa cosa. solo per curiosità, quale si usano le persone sul campo?{% load static%} e {% load staticfiles%}: quale è il preferito?

L'ho letto ma non so ancora quando utilizzare quale e quali persone utilizzano sul campo. il mio funziona per entrambi. all'inizio pensavo che stesse caricando la cartella statica ma funzionasse anche per i file statici ... -

+3

Possibile duplicato di [Qual è la differenza tra {% load staticfiles%} e {% load static%}] (http://stackoverflow.com/questions/24238496/what-is-the-difference-between-load -staticfiles-and-load-static) – dyeray

+1

@dyeray yeah Ho letto questo, ma ancora non so quando usare quale e quali persone del campo usano. il mio funziona per entrambi. all'inizio pensavo che stesse caricando la cartella statica ma funziona anche per i file statici ... –

risposta

18

Per il momento (Django 1.9 e precedenti), {% load staticfiles %} carica il static templatetag dall'app contrib che ha più funzioni di quella incorporata django.core.static.

La differenza più importante è staticfiles in grado di gestire i file memorizzati su CDN, poiché il risolutore può gestire gli hash, ad esempio. core.static aggiungi il nome file statico, che non è sufficiente se stai elaborando i tuoi file (ad esempio aggiungendo hash md5 per svuotare la cache tra le versioni)

Questa differenza è dovuta al fatto che la gestione dei file di archiviazione non locali era non è dedicato ad essere incluso nel pacchetto base di Django, ma è stato comunque utile a molti sviluppatori per essere implementato come pacchetto contrib. Quindi se hai iniziato a usare staticfiles, dovevi ricordarti di usarlo ogni volta nei tuoi modelli. MA, alcuni problemi potrebbero apparire, ad esempio quando using Media classes quindi la decisione è stata quella di unire questi due modelli temporali in uno e utilizzare un comportamento diverso se lo sviluppatore ha INSTALLED_APPS o meno nello django.contrib.staticfiles.

Da Django 1.10 and onwards (anche see ticket in Django tracker), il {% load static %} userà staticfiles internamente se attivato (oherwise mantenere comportamento di default), e il templatetag nel pacchetto contrib verrà ritirato per evitare confusione.

TL; DR

  • Prima Django 1.10: staticfiles carichi a templatetags che possono gestire non locale di stoccaggio in cui static non può (o non facilmente);
  • Da Django 1.10: contrib.staticfiles l'app esiste ancora ma i suoi templatetags verranno rimossi solo i resti di templatetags; {% static %};
  • Da Django 2.0 (credo): {% load staticfiles %} rimosso.

Per ora, utilizzare staticfiles templatetags se si utilizza il relativo contrib app (e sai perché lo si utilizza) fino a Django 1.10, altrimenti basta usare static.