我有一个照片模型,其中包含两个字段:
title = models.CharField()
path = models.CharField()
当我在管理员面板中添加新的照片时,路径等于 /images/image_ex.jpg
这是我的视图文件:
def gallery(request):
photos = Photo.objects.all()
return render(request, 'gallery.html', {'photos': photos})
这是在gallery.html中的
标签:
{% loadstaticfiles %}
<img src="{%static '{{photo.path}}'%}"/>
问题在于照片无法渲染,如果我查看页面的代码,src等于类似这样的内容:
src="static/%7B%7B%20photo.path%20%7D%7D"
什么是问题?我该如何在src中使用模板变量? 附注:images文件夹存在于静态文件夹中,图片也存在。我已将静态目录添加到settings.py中。如果我将src更改为普通的src,则可以正常工作,例如 。
<img src="{static 'images/image_ex.png'%}">
照片正常显示。
FileField
吗? - Willem Van Onsem<img src="{%static photo.path %}"/>
但我并不确定这会起作用,因为您没有指定一个“photo”变量。 - Willem Van Onsem{% static photo.path %}
将会给出一个静态URL,但在这里使用FileField
可能更好。 - Willem Van Onsem{% static ... %}
?{% static ... %}
的想法是您有专用目录(命名为static
),并且允许访问这些目录,视图返回正确的文件流。但是,您不能只从服务器返回随机文件,因为那将是可能出现的最严重的安全问题之一。因此,您需要一些“视图”来限制访问。这正是文件字段背后的想法之一:https://docs.djangoproject.com/en/2.1/topics/files/ - Willem Van Onsem