【发布时间】:2019-12-22 12:53:48
【问题描述】:
我正在使用 boto3 和 django-storage 库来加载我的 django 项目的媒体文件。
storage_backends.py
class PrivateMediaStorage(S3Boto3Storage):
location = settings.AWS_STORAGE_LOCATION
default_acl = 'private'
file_overwrite = False
custom_domain = False
class PublicStaticStorage(S3Boto3Storage):
location = settings.AWS_PUBLIC_STATIC_LOCATION
settings.py
AWS_STORAGE_LOCATION = 'media/private'
AWS_LOCATION = 'static'
AWS_PUBLIC_STATIC_LOCATION = 'static/'
DEFAULT_FILE_STORAGE = 'path.to.PrivateMediaStorage'
models.py
class Documents(models.Model):
""" uploaded documents"""
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
upload = models.FileField(storage=PrivateMediaStorage())
filename = models.CharField(_('documents name'), max_length=255, blank=True, null=True)
datafile = models.FileField()
created = models.DateTimeField(auto_now_add=True)
type = models.ForeignKey(Doctype, on_delete=models.CASCADE, blank=True)
文件加载效果很好。但是有一点我不明白,文件的链接看起来不对(它包含静态而不是媒体)。好像
https://myhost.s3.amazonaws.com/static/class-descriptions_1.csv
还有关于访问的。现在我点击文件的链接,我收到一条消息
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>4B8296F8F77491F5</RequestId>
<HostId>
CG96q+LGWcvsIK2YkuaE2wExL8/YTqH1PmjOSFGAqcgaKaTYnOet1QoItGJhW1Oj
</HostId>
</Error>
这对于未注册的用户来说是正常的,但是如何让在我的 Django 项目中注册的用户看到这个文件呢?
【问题讨论】:
标签: django amazon-web-services amazon-s3 boto3 django-storage