![](/img/trans.png)
[英]I can't get AWS S3 to serve media files on my Django/Heroku App
[英]Serve static files on heroku using AWS S3 for django?
我正在使用heroku和AWS S3為靜態文件部署django應用程序,問題是我沒有找到有關如何鏈接Heroku的Postgres數據庫和S3服務的信息。
我已經設置了AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,S3_BUCKET,添加CORS配置,但我的問題是如何將S3存儲與Heroku的postgres數據庫鏈接? 這可能嗎?
這是我的模型在管理員中的樣子,但如果我在這里上傳圖像,5分鍾后就會消失。 圖片上傳為http://ishopss.com/imageUpload.png
當然我可以使用這樣的靜態網址,但問題是我想要顯示不同的圖像,而不是所有的圖像。 在數據庫http://ishopss.com/for.png中提供服務
所以我的代碼需要像這樣,為不同的圖像提供靜態文件http://ishopss.com/course.png
我希望有人可以幫助我,謝謝。
我在這篇文章中找到了解決方案:
http://blog.doismellburning.co.uk/2012/06/25/django-and-static-files/
http://offbytwo.com/2012/01/18/deploying-django-to-heroku.html
https://devcenter.heroku.com/articles/s3
基本上我需要下載boto(pip install boto)並將其放在requirements.txt(pip freeze> requirements.txt)中,並在settings.py中添加:
INSTALLED_APPS = ('storages',)
AWS_ACCESS_KEY_ID = 'xxxxxx'
AWS_SECRET_ACCESS_KEY = 'xxxxxxx'
AWS_STORAGE_BUCKET_NAME = 'bucket_name'
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
STATIC_URL = 'http://s3.amazonaws.com/%s' % AWS_STORAGE_BUCKET_NAME + '/'
然后你需要設置'AWS_ACCESS_KEY_ID','AWS_SECRET_ACCESS_KEY','AWS_STORAGE_BUCKET_NAME'
運用
$ heroku config:set AWS_ACCESS_KEY_ID=xxx AWS_SECRET_ACCESS_KEY=yyy
$ heroku config:set S3_BUCKET_NAME=appname-assets
更新html中的src和href:
url http://ishopss.com/url.png
最后,您需要在https://console.aws.amazon.com/中更新權限
請看這里:
對你來說可能是最簡單的方式。 我認為{{course.image}}將從頭開始工作。 如果不是 - 您可以在AWS上創建CDN點,並在您的django設置文件中存儲CDN URL。 之后你的HTML應該是這樣的:
{{ settings.CDN_URL }}/{{ course.image }}
如果你喜歡糖,並且有時候你可以編寫自己的模板標簽,那就像:
{% my_static course,.image %}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.