我正在尝试在模板中显示已经存储的数据库图像。但是在这里,我仅获得图像的名称。如何解决这个问题,我在哪里做错了。
models.py
class Images(models.Model):
image = models.ImageField(upload_to='images', blank=True, null=True)
settings.py
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
urls.py
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
views.py
def display(request):
myimages_objs = Images.objects.all().values()
for i in myimages_objs :
myimages_objs = i['image']
return render(request, 'index.html', {'myimages_obj ': myimages_objs })
index.html
<div class="divi">
<img src="{{ myimages_obj }}" alt="image">
</div>
答案 0 :(得分:0)
我不明白为什么要在for循环中返回对象,这导致模板中仅显示单个图像。您可以通过传递模板中的所有图像对象,然后遍历模板中的对象以显示图像,来代替执行此操作。
您可以将视图更改为:
def display(request):
myimages_objs = Images.objects.all() # get all the images
return render(request, 'index.html', {'myimages_objs':myimages_objs})
然后在您的模板中:
<div class="divi">
{% for item in myimages_objs %} //loop through all the images
<img src="{{ item.image.url }}" alt="image">
{% endfor %}
</div>
编辑:
将 upload_to 更改为 upload_to =“ images /” 。
就我而言,您的图像未存储在images
文件夹中,因为您错过了反斜杠(代表文件夹名称)。因此,图像被保存在media
文件夹中。
但是图像URL类似于project_path/media/images/something.jpg
,由于图像未保存在images
文件夹中而无法找到。
按照说明更改字段,以将新图像存储在指定的文件夹中。对于旧图像,请手动将其复制到图像文件夹。
我希望这会有所帮助。