在Django中将图像文件与数据库数据一起使用的最佳方法?

问题描述

我是编程和Django的新手,所以如果这是一个容易回答的问题,请原谅我,但我没有找到任何可靠的答案。

我目前正在旅游预订网站上。我想在巡回课程中为巡回添加几个图像,以便用户可以在巡回详细信息页面上滚动浏览照片。我在此页面https://medium.com/ibisdev/upload-multiple-images-to-a-model-with-django-fd00d8551a1c中引用了如何编写模型的信息,但是该方法是供用户上传文件的,因此它没有解释如何使用现有文件。我应该如何处理这些文件?

正如该链接所说明的,我希望使用一个相册类,然后在Tour类中使用该相册,以便我可以为每个游览使用几张照片,而不仅仅是一个图像字段。

我已经看到您可以将图像直接放入数据库中,但这似乎不是最佳解决方案。是否应将它们存储在静态文件夹中?如果是这样,如何将它们与Tour类中的正确游览相关联?

如果应该将它们存储在数据库中,如何从数据库中调用这些图像并将其显示在html中?

解决方法

您可以在模型中使用django.db.models.FilFielddjango.db.models.ImageField来存储文件名。实际文件将保存在您的媒体文件夹中,关联的文件名将保存在您的数据库中。

确保在MEDIA_ROOT中声明了MEDIA_URLsettings.py来告诉django用户上传的内容和访问方式:

MEDIA_ROOT = '/home/ljdoumas/mysite/media/'

MEDIA_URL = '/media/'

在您的应用程序models.py中,您将需要以下内容:

from django.db import models


class Tour(models.Model):
    tour_image = models.ImageField(null=True,blank=True)

您还可以在图像字段中设置参数upload_to,以指定文件在媒体文件夹中的确切上传位置。

如果您需要多个图像,则可以为图像创建另一个模型,并使用多对多关系将它们连接到游览中

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...