0

目前,我一直在让我的静态和媒体与 heroku 上的 django 一起工作时遇到问题。我的静态终于可以工作了,但我的媒体不行,这是我在任何类型的生产环境中的第一次,所以我不确定它是否正确完成。我的媒体文件将在上传后工作,但是一旦我编辑不相关的内容并尝试将其推送到 heroku 输入,它们将不再工作:

git add .
git commit -m "changes"
git push heroku master

因此,在我更新我的 heroku 应用程序后,用户必须重新添加他们的媒体文件才能让他们在我每次更新时都能正常工作。就我到目前为止的代码而言:

#settings.py
DEBUG = False
MEDIA_ROOT = 'media'
MEDIA_URL = '/media/'
STATIC_ROOT = 'static'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
    'static',
)

#urls.py
urlpatterns += staticfiles_urlpatterns()

if not settings.DEBUG:
    urlpatterns += patterns('',
        (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT}),
        (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),
    )

我很不知道该怎么做,我尝试了几种不同的更改我的网址和设置,但没有任何运气。我读过其他帖子并尝试过,我读过文档,不幸的是我仍然不太明白。在开发中一切正常,但在我的设置下,我的开发项目有不同的代码。任何帮助将不胜感激。

编辑

因此,经过更多挖掘,我决定尝试使用 Amazon S3 来处理我的媒体文件。我仍然不确定如何将文件上传到 S3,但我已经创建了一个 S3 存储桶并设置了我的 heroku 设置(AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、S3_BUCKET_NAME)。我仍然不确定我的媒体和静态设置应该是什么样子。如果有人能指出我正确的方向,我将不胜感激。

4

1 回答 1

0

好的,所以在我的头撞到墙上很多之后,我终于让事情按照他们应该的方式工作了。我现在将 Amazon S3 用于我的静态和媒体文件(部分感谢这篇文章,对我来说正确设置的最有帮助的文章是这里。如果你使用 heroku,你可能想考虑使用 S3静态和媒体文件。是的,这是你必须尝试配置和集成的其他东西,不,它不是免费的,但如果你只是推回去,你最终可能会发现自己在使用它,所以节省一些时间。也有助于将静态和媒体分离到单独的目录中。

于 2013-01-09T19:12:22.590 回答