Nasıl set-up statik dosyalar ve medya dosyaları için django-Depo ve Amazon S3, ama farklı klasörler ile Django projesi için?
Statik dosyaları (STATIC_ROOT
) ve kullanıcı tarafından yüklenen dosyaları (MEDIA_ROOT
) uygulamaları saklamak için sunucu dosya sistemi kullanan Django bir proje yapılandırma ediyorum.
Şimdi Amazon içerik bu kova yarattım yani S3, tüm ana bilgisayara ihtiyacım var. boto
depolama arka uç ile django-storages
kullanarak, S3 kova için toplanan statik yüklemeyi başardım:
MEDIA_ROOT = '/media/'
STATIC_ROOT = '/static/'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_ACCESS_KEY_ID = 'KEY_ID...'
AWS_SECRET_ACCESS_KEY = 'ACCESS_KEY...'
AWS_STORAGE_BUCKET_NAME = 'bucket-name'
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
Sonra, bir sorunum var: MEDIA_ROOT
STATIC_ROOT
kova kök statik dosyaları ve kullanıcı içeren bir kova içinde kullanılan karşıya yollar.
O zaman atabilirim:
S3_URL = 'http://s3.amazonaws.com/%s' % AWS_STORAGE_BUCKET_NAME
STATIC_URL = S3_URL STATIC_ROOT
MEDIA_URL = 'S3_URL MEDIA_ROOT
Ve şablonları bu ayarları kullanın, ancak django-storages
ile S3 saklarken statik/medya dosyalarının ayrım yoktur.
Bu nasıl yapılabilir?
Teşekkürler!
CEVAP
Aşağıdaki çalışma, ve çok benzer olsa da: Mandx yöntemi daha basit olmalı bence
s3utils.py
bir dosya oluşturun:
from storages.backends.s3boto import S3BotoStorage
StaticRootS3BotoStorage = lambda: S3BotoStorage(location='static')
MediaRootS3BotoStorage = lambda: S3BotoStorage(location='media')
settings.py
içinde:
DEFAULT_FILE_STORAGE = 'myproject.s3utils.MediaRootS3BotoStorage'
STATICFILES_STORAGE = 'myproject.s3utils.StaticRootS3BotoStorage'
Farklı ama ilgili bir örnek aslında test ettim) example_
iki dosya here görülebilir.
Nasıl Django farklı ayarlarla test Üni...
Nasıl Amazon EC2 ev sahipliği Django w...
Django statik dosyalar ve medya dosyal...
Dosyalar ve klasörler de dahil olmak ü...
Django nasıl bir görünüm içinde 2 ya d...