I don't know what the difference is supposed to be, but I found a use case difference (using django 1.9.1 running via apache, wsgi on Python 3.4). In my app, I have some images in ImageFields
in the database. If I use code like this in my template:
<a href="object-{{object.id}}"><img src="{% static object.image %}" height="200px"></a>
then, if I use {% load static %}
, django thorws a TypeError
(Cannot mix str and non-str arguments
). This is presumably because the object.image
is not a string, it's an ImageField
, that gets converted to a string at some later stage. However, if one uses {% load staticfiles %}
no such error occurs.
Unfortunately, I discovered this difference after spending hours trying to debug the problem. I managed to find a workaround for when using the first option, namely to add a string-converter method to the object like this:
#image string
def image_str(self):
return str(self.image)
Hope this knowledge will be of use to someone.
原链接:https://stackoverflow.com/questions/24238496/what-is-the-difference-between-load-staticfiles-and-load-static