Je ne sais pas quelle est la différence, mais j'ai trouvé une différence de cas d'utilisation (en utilisant django 1.9.1 fonctionnant via apache, wsgi sur Python 3.4). Dans mon application, j'ai des images ImageFields
dans la base de données. Si j'utilise un code comme celui-ci dans mon modèle:
<a href="object-{{object.id}}"><img src="{% static object.image %}" height="200px"></a>
puis, si j'utilise {% load static %}
, django lance un TypeError
( Cannot mix str and non-str arguments
). Ceci est probablement dû au fait que le object.image
n'est pas une chaîne, c'est un ImageField
, qui est converti en chaîne à un stade ultérieur. Cependant, si l'on utilise une {% load staticfiles %}
telle erreur, aucune erreur ne se produit.
Malheureusement, j'ai découvert cette différence après avoir passé des heures à essayer de déboguer le problème. J'ai réussi à trouver une solution de contournement lors de l'utilisation de la première option, à savoir pour ajouter une méthode de convertisseur de chaîne à l'objet comme ceci:
#image string
def image_str(self):
return str(self.image)
J'espère que cette connaissance sera utile à quelqu'un.