我正在做一个要求用户提交各种形式的帖子的项目。
有些帖子需要图片,有些帖子需要视频。为了处理这个和其他复杂性,我正在考虑使用jsonfield
s.
我当前的问题是处理文件,即图像和视频。我希望能够将文件 url 存储在 json 字段的字段中,但我在互联网上没有遇到过类似的事情。
继续采用这种方法是否可行或可取?如果是这样,怎么办?
我正在做一个要求用户提交各种形式的帖子的项目。
有些帖子需要图片,有些帖子需要视频。为了处理这个和其他复杂性,我正在考虑使用jsonfield
s.
我当前的问题是处理文件,即图像和视频。我希望能够将文件 url 存储在 json 字段的字段中,但我在互联网上没有遇到过类似的事情。
继续采用这种方法是否可行或可取?如果是这样,怎么办?
您可以使用 Django 的 FileField https://docs.djangoproject.com/en/3.1/ref/models/fields/#filefield适用于 django-rest-framework。它完全按照您的预期工作(即返回保存文件的 URL)。
我更喜欢通过S3Boto3Storage
from使用 S3 作为存储django-storages
。您可以定义一个自定义存储,例如
class MyCustomStorage(S3Boto3Storage):
location = 'private'
default_acl = 'private'
file_overwrite = False
custom_domain = False
然后在你的模型中:
class MyModel(models.Model):
...more fields...
attachment = models.FileField(storage=MyCustomStorage(), null=True)
...more fields...
您可以为 AWS S3 或任何替代方案使用类似 S3 的服务。如果您需要本地服务并且不想使用 3 方服务,您可以查看可以在任何服务器上本地设置的minio 。这个想法是跟随你设置 minio/s3 服务并将它用作你的 django 应用程序的媒体存储(查看django-storages)
因此,无论何时创建帖子,您都可以将所有媒体或静态文件上传到 s3,并在您的帖子对象中使用 url。