我一直在努力研究如何让AWS S3与Heroku一起使用FileField和ImageField上传。但我一直没能让它发挥作用。
计划是
我关注this文章,但似乎没有用。 有什么东西我错过了吗? 我希望文件上传尽可能轻松。有没有比AWS更好的替代方案,django和heroku友好?在这方面的任何帮助将受到高度赞赏。
答案 0 :(得分:5)
使用Django Storages管理S3上的静态文件。然后按Heroku Static assets guide when deploying。
首先,使用AWS控制台或您喜欢的工具在S3中创建一个存储桶。然后,修改settings.py并添加以下值:
import os
AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = '<YOUR BUCKET NAME>'
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
STATIC_URL = 'http://' + AWS_STORAGE_BUCKET_NAME + '.s3.amazonaws.com/'
ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'
请注意,我们使用环境变量来存储AWS访问密钥和密钥。当我们讨论这个主题时,如果您计划开源正在部署的Django应用程序,请考虑将SECRET_KEY存储在环境变量中。
上述内容来自here