在 sqlite 中存储图像 - Django

Gir*_*ore 1 python sqlite django django-models django-views

我是 Django 和数据库的新手。

Django 使用 sqlite 数据库作为默认数据库。是否可以将图像存储在 sqlite 数据库中并将其显示在我的网页上?我在 Django 官方网站上找不到任何相关文档。

Gr3*_*3at 7

Django 的ImageFieldFileField都只是指向文件实际上传位置的链接。如果您阅读 Django 有关如何使用 imageField的文档,您可能会发现一个upload_to属性。

这两个字段都是在 Django 的 ORM 中实现的,并且与数据库无关(即应该在 SQLite、MySQL 或 Django 支持的任何其他数据库上工作)。

您可以查看有关如何管理文件的示例。

链接中的第一个示例显示了汽车模型并将图像上传到carsMEDIA_ROOT 文件夹下。

from django.db import models

class Car(models.Model):
    name = models.CharField(max_length=255)
    price = models.DecimalField(max_digits=5, decimal_places=2)
    photo = models.ImageField(upload_to='cars')
Run Code Online (Sandbox Code Playgroud)

选择

如果您确实需要将图像存储live在数据库中,您始终可以利用 django 的BinaryField并将整个图像保存为 BLOB。

from django.db import models

class Car(models.Model):
    name = models.CharField(max_length=255)
    price = models.DecimalField(max_digits=5, decimal_places=2)
    photo_as_blob = models.BinaryField()  # save photo as binary object
Run Code Online (Sandbox Code Playgroud)

正如您从其他答案中看到的那样,通常不认为将大文件直接保存在数据库中是一个好习惯。