Non so quale sia la differenza, ma ho trovato una differenza tra maiuscole e minuscole (utilizzando django 1.9.1 in esecuzione tramite apache, wsgi su Python 3.4). Nella mia app, ho alcune immagini in ImageFields
nel database. Se uso il codice come questo nel mio modello:
<a href="object-{{object.id}}"><img src="{% static object.image %}" height="200px"></a>
poi, se io uso {% load static %}
, Django thorws un TypeError
(Cannot mix str and non-str arguments
). Questo è presumibilmente perché lo object.image
non è una stringa, è un ImageField
, che viene convertito in una stringa in una fase successiva. Tuttavia, se si utilizza {% load staticfiles %}
, non si verifica tale errore.
Sfortunatamente, ho scoperto questa differenza dopo aver passato ore a cercare di eseguire il debug del problema.Sono riuscito a trovare una soluzione per quando si utilizza la prima opzione, vale a dire aggiungere un metodo di stringa-convertitore per l'oggetto come questo:
#image string
def image_str(self):
return str(self.image)
Speranza questa conoscenza sarà utile a qualcuno.
mi basta usare STATIC_URL per tutto e sembra funzionare bene per me – Maximas
@Maximas funziona, ma Immagino che non sia la miglior pratica – Rexford
Nessuna di queste risposte è buona. Questa è una [risposta più recente e completa] (https://stackoverflow.com/a/34424007/1577947). – Jarad