Ich weiß nicht, was der Unterschied sein soll, aber ich habe einen Anwendungsfallunterschied gefunden (mit django 1.9.1, das über Apache ausgeführt wird, wsgi unter Python 3.4). In meiner App befinden sich einige Bilder ImageFields
in der Datenbank. Wenn ich in meiner Vorlage folgenden Code verwende:
<a href="object-{{object.id}}"><img src="{% static object.image %}" height="200px"></a>
dann, wenn ich benutze {% load static %}
, wirft django ein TypeError
( Cannot mix str and non-str arguments
). Dies liegt vermutlich daran , dass object.image
es sich nicht um eine Zeichenfolge handelt, sondern um eine Zeichenfolge, die ImageField
zu einem späteren Zeitpunkt in eine Zeichenfolge konvertiert wird. Wenn man jedoch {% load staticfiles %}
keinen solchen Fehler verwendet, tritt er auf.
Leider habe ich diesen Unterschied entdeckt, nachdem ich stundenlang versucht hatte, das Problem zu beheben. Ich habe es geschafft, eine Problemumgehung zu finden, wenn ich die erste Option verwendet habe, nämlich dem Objekt eine String-Konverter-Methode wie folgt hinzuzufügen:
#image string
def image_str(self):
return str(self.image)
Hoffe, dieses Wissen wird jemandem von Nutzen sein.