【问题标题】:S3 not serving media files to Django heroku appS3 不向 Django heroku 应用程序提供媒体文件
【发布时间】:2012-09-30 09:11:15
【问题描述】:

晚安,伙计们,我正在尝试在 Heroku 上使用 django 设置一个应用程序,使用 S3 作为我的 javascript 和样式表的服务器。在一些帖子之后,我在 S3 上配置了一个存储桶,并将我的环境变量配置到 heroku 中。然后在我的设置文件中我有这样的东西

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',        
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
    'apuh',
    'storages',
)

AWS_QUERYSTRING_AUTH = False
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 = 'mybucket'

STATIC_URL = 'https://s3.amazonaws.com/%s/' % AWS_STORAGE_BUCKET_NAME ADMIN_MEDIA_PREFIX = '/static/admin/'

当我运行我的应用程序时,它会因以下错误而崩溃:

Error: No module named storages

我使用 pip install django_storages 安装了 django_storages。它安装在我的环境中。如果我评论“存储”行,它不会从存储桶中加载任何文件,我猜该请求不会发送属性令牌进行身份验证。

所以,我的问题是,我做错了什么。我已经检查了问题和问题,但看起来我错过了一些重要的东西。

提前致谢

【问题讨论】:

    标签: django heroku amazon-s3 django-storage


    【解决方案1】:

    也许添加这些会有所帮助?

    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/'
    

    是的,也安装了boto

    然后运行 ​​pip freeze > requirements.txt 以确保您的所有依赖项都是最新的

    希望对你有帮助

    【讨论】:

    • 我已经安装了 boto (pip install boto),我运行了 pip freeze。我的设置缺少 default_file_storage。我会试一试。谢谢
    • 我用宽松的权限设置了一切。现在它起作用了。谢谢
    猜你喜欢
    • 2021-05-02
    • 1970-01-01
    • 2020-05-23
    • 2019-03-09
    • 1970-01-01
    • 2012-10-29
    • 2012-07-07
    • 2010-11-08
    • 1970-01-01
    相关资源
    最近更新 更多