我试图用http://django-storages.readthedocs.org/en/latest/backends/amazon-S3.html为服务既静态文件和上传的媒体,但我不能肯定这是可能的.有没有记录的方式我错过了?另外,我假设(希望)您可以为每个配置一个单独的存储桶,但我找不到任何相关信息.
我在尝试从本地路径上传文件时遇到问题FileField。
我已在S3存储桶中正确配置了 CDN 后端,并将其用作PrivateMediaStorage我的模型字段之一:
class MyModel(models.Model):
some_file = models.FileField(storage=PrivateMediaStorage())
...
Run Code Online (Sandbox Code Playgroud)
通过这个非常简单的配置,每当我创建/更新模型时,django-admin它都会被保存并附加文件,并some_file正确上传到S3存储桶。
然而,如果我尝试以编程方式创建/更新模型实例(例如通过自定义manage.py命令),则会创建模型实例本身,但附件永远不会上传到 CDN。这是我用来上传文件的代码的简化版本:
class Command(BaseCommand):
help = 'Creates dummy instance for quicker configuration'
def handle(self, *args, **options):
some_file = os.path.join(os.path.dirname(__file__), '../../../temporary/some_image.png')
if not os.path.exists(some_file):
raise CommandError(f'File {some_file} does not exist')
else:
instance, created = MyModel.objects.get_or_create(defaults={'some_file': some_file}, ...)
Run Code Online (Sandbox Code Playgroud)
我的实现中缺少什么以及需要调整什么才能允许从本地存储上传文件?
django-storages在运行时,我遇到使用S3Boto后端的内存泄漏default_storage.exists()
我在这里关注文档:http: //django-storages.readthedocs.org/en/latest/backends/amazon-S3.html
这是我的设置文件的相关部分:
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
Run Code Online (Sandbox Code Playgroud)
以下是我要重复此问题的方法:
./manage.py shell
from django.core.files.storage import default_storage
# Check default storage is right
default_storage.connection
>>> S3Connection:s3.amazonaws.com
# Check I can write to a file
file = default_storage.open('storage_test_2014', 'w')
file.write("does this work?")
file.close()
file2 = default_storage.open('storage_test_2014', 'r')
file2.read()
>>> 'does this work?'
# Run the exists command
default_storage.exists("asdfjkl") # This file doesn't exist - but the same thing happens no matter what I put here - even if I put …Run Code Online (Sandbox Code Playgroud) 有来自 yandex 云的 s3 https://cloud.yandex.com/docs/storage/tools/?utm_source=console&utm_medium=empty-page&utm_campaign=storage
我如何配置 django 来使用它?