我已经使用storages
和boto
将我的django应用设置设置为使用S3。使用collectstatic
,我可以将静态资产移动到S3。但是,我还需要将从Django Admin上传的图像文件存储到S3。
我使用了来自here的django-s3direct包。我能够正确设置它,上传似乎工作。但是,在加载模板时,不会提供上传的图像。
我的设置.py:
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_ACCESS_KEY_ID = 'ACCESS_KEY'
AWS_SECRET_ACCESS_KEY = 'SECRET_KEY'
AWS_STORAGE_BUCKET_NAME = 'bucketname'
S3DIRECT_ENDPOINT = 's3.amazonaws.com' # http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
S3DIRECT_DIR = 's3direct' # (optional, default is 's3direct', location within the bucket to upload files)
S3DIRECT_UNIQUE_RENAME = False # (optional, default is 'False', gives the uploaded file a unique filename)
Models.py:
class BannerAds(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=255)
phone = models.BigIntegerField(max_length=20)
image = S3DirectField(upload_to='s3direct')
答案 0 :(得分:0)
如果文件正在上传,则不应该是您的设置问题。尝试在django admin中检查您的权限,确保您已获得编辑该模型的权限。
app name | BannerAds | Can change banner ads
答案 1 :(得分:0)
您需要做的是设置媒体文件,其中包括上传。
有几种方法可以做到这一点,我使用django-storages
除此之外,您还必须更改urls.py:
urlpatterns = [
...
] + + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
是的,您还必须为MEDIA_ROOT
添加设置。
但最重要的是媒体文件,谷歌,你和你将在路上。