gpt4 book ai didi

django heroku 媒体文件 404 错误

转载 作者:行者123 更新时间:2023-12-02 08:38:50 25 4
gpt4 key购买 nike

我最近向 Heroku 部署了一个 Django 应用程序并上传了一些媒体文件,一切似乎都运行良好,直到昨天我再次尝试访问该应用程序时发现它出现了 404 错误。

知道为什么会这样吗?

设置.py:

import os
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
import dj_database_url
#DATABASES['default'] = dj_database_url.config()
DATABASES = {'default': dj_database_url.config(default='postgres://localhost')}

# Honor the 'X-Forwarded-Proto' header for request.is_secure()
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

# Allow all host headers
ALLOWED_HOSTS = ['*']

STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
MEDIA_URL = '/media/'

网址.py

urlpatterns = patterns('',
(r'', include(application.urls)),
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
url(r'^admin/', include(admin.site.urls)),
(r'^media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT}),
(r'^static/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.STATIC_ROOT}),

)

最佳答案

Heroku dynos 的生命周期有限,当它们死亡并被替换(自动发生)时,其中的任何文件都会丢失,包括您通过 Django 上传的任何文件。你想要做的是设置 Django 的媒体处理以将文件放在更永久的地方(这也将允许你一次使用多个 dynos,这就是 Heroku 处理水平缩放的方式)。我倾向于为此使用 Amazon S3,所以我的配置看起来有点像:

AWS_STORAGE_BUCKET_NAME = "your_bucket"
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
MEDIA_URL = "https://%s.s3.amazonaws.com/" % os.environ['AWS_STORAGE_BUCKET_NAME']
MEDIA_ROOT = ''
AWS_ACCESS_KEY_ID = "your_access_key_id"
AWS_SECRET_ACCESS_KEY = "your_secret_access_key"

这是使用 django-storagesboto使用 Amazon S3 提供 Django 存储层。

请注意,根据您的应用程序,S3 的这种“直通”访问可能不合适。有some notes on working with S3在 Heroku 的开发中心可能会有所帮助。

关于django heroku 媒体文件 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18578735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com