在Django-storages中使用S3上传图片
我正在尝试在亚马逊的S3服务上上传媒体文件。我想先把它们上传到存储桶的根目录,然后可能再创建子文件夹来保存文件。我的测试模型很简单。
from django.db import models
# Create your models here.
class TestModel(models.Model):
name = models.CharField(max_length=10)
logo = models.ImageField(upload_to='pictures/')
class Meta:
verbose_name = ('TestModel')
verbose_name_plural = ('TestModels')
def __unicode__(self):
pass
我已经创建了一个名为pictures的子文件夹。
settigns.py
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_ACCESS_KEY_ID = 'id'
AWS_SECRET_ACCESS_KEY = 'secret_key'
AWS_STORAGE_BUCKET_NAME = 'mybucket'
from S3 import CallingFormat
AWS_CALLING_FORMAT = CallingFormat.SUBDOMAIN
但是当我尝试从管理面板添加一个TestModel时,我遇到了以下错误。
Request URL: http://127.0.0.1:8000/admin/testmodel/testmodel/add/
Django Version: 1.6.4
Exception Type: TypeError
Exception Value:
'NoneType' object has no attribute '__getitem__'
s3和django-storages的工作方式和以前一样吗?使用s3时,MEDIA_URL应该设置成什么?使用S3和django-storages时,MEDIA_ROOT应该设置成什么?
我可以用这种方式将文件上传到S3服务吗?这是我第一次使用云存储,所以我有点困惑。
1 个回答
0
如果你想使用S3,可以看看“boto”这个Python模块,它是用来和AWS(亚马逊云服务)打交道的。你可以在这里找到相关信息:http://boto.readthedocs.org/en/latest/。还有关于MEDIA_ROOT和MEDIA_URL的内容,可以参考这个链接:https://docs.djangoproject.com/en/dev/ref/settings/#media-root。