Python Heroku Django应用程序未加载静态文件(未找到404)
我一直在尝试在heroku上部署django应用程序。但是,它无法获取静态文件。我在heroku上运行了Python Heroku Django应用程序未加载静态文件(未找到404),python,django,heroku,deployment,Python,Django,Heroku,Deployment,我一直在尝试在heroku上部署django应用程序。但是,它无法获取静态文件。我在heroku上运行了collecstatic,在应用程序的根目录中有一个static文件夹,其中包含正确的文件: ~/static/rest\u framework/css/bootstrap.min.css Settings.py: STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'static') 卷曲: Django不支持在生产环境
collecstatic
,在应用程序的根目录中有一个static
文件夹,其中包含正确的文件:
~/static/rest\u framework/css/bootstrap.min.css
Settings.py:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
卷曲:
Django不支持在生产环境中提供静态文件。然而,这个奇妙的项目可以集成到您的Django应用程序中,它的设计正是出于这个目的
pip install whitenoise
将whitenoise添加到requirements.txt
在app/wsgi.py中添加此代码
from whitenoise.django import DjangoWhiteNoise
application = DjangoWhiteNoise(application)
我花了几个小时才弄明白这一点@VipinMohan解决方案适用于whitenoise将collectstatic添加到Procfile
web: python manage.py collectstatic --no-input; gunicorn myapp.wsgi --log-file - --log-level debug
由于此堆栈溢出,如果使用v4.0或更高版本,则应更改WhiteNoise配置。 请参阅此可能的副本
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
# the next line of code is the one that solved my problems
'whitenoise.middleware.WhiteNoiseMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware'
]
web: python manage.py collectstatic --no-input; gunicorn myapp.wsgi --log-file - --log-level debug