2014-05-13 98 views
0

我想在亞馬遜的S3服務上傳MEDIA_FILES。我想先將它們上傳到bucket的根目錄下,然後在保存文件之前創建子文件夾。我的測試模型很簡單使用S3與Django的存儲和上傳圖像

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的儲存工作,就像之前? MEDIA_URL在使用s3時設置的值是多少?使用S3和django-storage時,MEDIA_ROOT的值是多少?

我可以使用this way將文件上傳到S3服務嗎?這是我第一次使用雲存儲,所以我有點困惑。

回答

0

,如果你想使用S3,檢查AWS的「博託」,Python模塊,http://boto.readthedocs.org/en/latest/ 這裏大約MEDIA_ROOT和MEDIA_URL https://docs.djangoproject.com/en/dev/ref/settings/#media-root

+0

我知道媒體的根是什麼,我問的是如何將它設置成與django-storage和s3一起使用它。自從django-storages使用它之後,我也知道它們。 – Apostolos

+0

我不好,沒注意你使用django-storage,我在我的項目中使用了tinyS3。 – privaloff

+0

沒問題我想我正在使用這個http://stackoverflow.com/a/10825691/2349589 – Apostolos