我是一名有用的助手,可以为您翻译内容。以下是需要翻译的内容:
刚接触Heroku和Amazon S3,还请多多包涵。我已将Django应用程序上传到Heroku,并在用户媒体上传方面遇到了问题。模型如下:
#models.py
class Movie(models.Model):
title = models.CharField(max_length = 500)
poster = models.ImageField(upload_to = 'storages.backends.s3boto')
pub_date = models.DateTimeField(auto_now_add = True)
author = models.ForeignKey(User)
海报属性是上传图片的属性。我在本地运行良好,但现在在Heroku上出现错误。所以我添加了“storages.backends.s3boto”,正如许多其他帖子告诉我的那样(不确定是否正确)。
我的Settings.py文件目前看起来很混乱:
#settings.py
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
PROJECT_DIR = os.path.join(PROJECT_ROOT, '../qanda')
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_ACCESS_KEY_ID = '****************'
AWS_SECRET_ACCESS_KEY = '************'
AWS_STORAGE_BUCKET_NAME = 'mrt-assets'
AWS_PRELOAD_METADATA = True
MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'qanda/media/movie_posters/)
MEDIA_URL = '/media'
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'staticfiles')
STATIC_URL = 'https://mrt-assets.s3.amazonaws.com/static/'
STATICFILES_DIRS = (os.path.join(PROJECT_DIR, 'static'),)
我的存储桶名字叫做mrt-assets,里面有两个文件夹:static(包含css、js、图片和媒体文件)。目前我不太担心静态文件的问题,因为我已经将CSS / JS文件硬编码到HTML文件中*,但是如何将用户上传的媒体文件(任何类型的图片)放入mrt-assets / media中呢?
*尽管如果有人想帮助处理静态文件也可以。但用户上传的媒体文件更加紧急。
编辑(根据Yuji的评论):
已尝试多种选项,但都无法工作。我回去删除了很多更改,现在这是我的设置。
#settings.py
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
MEDIA_ROOT = 'http://s3.amazonaws.com/mrt-assets/media/'
MEDIA_URL = '/media/'
STATIC_ROOT = 'http://s3.amazonaws.com/mrt-assets/static/'
STATIC_URL = '/static/'
ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'
TEMPLATE_DIRS = (os.path.join(PROJECT_ROOT, "templates"),)
#models.py
#same as before, but now have changed the poster directory
poster = models.ImageField().
我不太确定该怎么做,需要将我的Heroku应用连接到S3,以便将用户媒体上传保存在那里。
现在已经将我的S3 Bucket更改为此
mrt-assets
static
css
js
images
media
(empty)