Saf*_*ari 9 python django amazon-s3 amazon-web-services django-storage
在我的 Django 项目中,我使用 Django-storageS 将媒体文件保存在我的 Amazon S3 中。
我遵循了本教程(我也使用了 Django-rest-framework)。这对我很有效:我可以上传一些图片,并且可以在我的 S3 存储中看到这些图片。
但是,如果我尝试删除我的模型的一个实例(包含 ImageField),这不会删除 S3 中的相应文件。这是正确的吗?我也不需要删除 S3 中的资源。
删除记录不会自动删除 S3 Bucket 中的文件。为了删除 S3 资源,您需要在文件字段上调用以下方法:
model.filefield.delete(save=False) # delete file in S3 storage
Run Code Online (Sandbox Code Playgroud)
您可以在
delete
你的模型的方法pre_delete
信号以下是如何在delete
模型方法中实现此目的的示例:
def delete(self):
self.filefield.delete(save=False)
super().delete()
Run Code Online (Sandbox Code Playgroud)
您可以使用以下代码提供其 id(S3 存储中的文件名)来删除 S3 文件:
import boto
from boto.s3.key import Key
from django.conf import settings
def s3_delete(id):
s3conn = boto.connect_s3(settings.AWS_ACCESS_KEY,
settings.AWS_SECRET_ACCESS_KEY)
bucket = s3conn.get_bucket(settings.S3_BUCKET)
k = Key(bucket)
k.key = str(id)
k.delete()
Run Code Online (Sandbox Code Playgroud)
确保在 settings.py 中正确设置 S3 变量,包括:AWS_ACCESS_KEY
、AWS_SECRET_ACCESS_KEY
和S3_BUCKET
。
归档时间: |
|
查看次数: |
4263 次 |
最近记录: |