使用s3与django-storages并上传图片

时间:2014-05-13 13:44:40

标签: python django file-upload amazon-web-services amazon-s3

我正在尝试在亚马逊的S3服务上传MEDIA_FILES。我想首先在桶的根目录上传它们然后在保存文件之前创建子文件夹。我的测试模型很简单

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

我有一个名为已创建图片的子文件夹。

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-storage时设置MEDIA_ROOT的值是多少?

我可以使用this way将文件上传到S3服务吗?这是我第一次使用云存储,所以我有点困惑。

1 个答案:

答案 0 :(得分: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