Django 图像上传在数据库绝对路径而不是相对路径

2024-09-30 08:30:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我的型号:

class MedicineType(models.Model):
    name = models.CharField(max_length=100)
    image = models.ImageField(upload_to='images/', max_length=255, null=True)

设置.py

^{pr2}$

现在,当我从浏览器上载图像时,图像的url将作为绝对路径存储在数据库中。例如,一个名为'示例.png“会有

http://localhost:8000/media/images/example.png

但我希望数据库中只存储相对路径。而不是本地主机和端口。我该怎么做?在


Tags: name图像image数据库modelpngmodelslength
1条回答
网友
1楼 · 发布于 2024-09-30 08:30:00

你怎么做什么?

是什么让你认为Django在数据库中存储http://localhost:8000/media/images/example.png?如果django就是这样做的,那么通过在python manage runserver 8010更改端口就意味着所有上传的内容都会中断?

不,Django不是这么做的。见this from the documentation

>>> car = Car.objects.get(name="57 Chevy")
>>> car.photo
<ImageFieldFile: chevy.jpg>
>>> car.photo.name
'cars/chevy.jpg'
>>> car.photo.path
'/media/cars/chevy.jpg'
>>> car.photo.url
'http://media.example.com/cars/chevy.jpg'

以上所述应该足以解释正在发生的事情。查看上面的链接了解更多详细信息。

{}是Django存储在数据库中的。那么car.photo.url或{}就是您认为存储在数据库中的内容。

相关问题 更多 >

    热门问题