Django管理静态文件不能在Heroku上使用whitenoise

我有一个部署到heroku的
django站点和常规静态文件正在工作,但管理静态文件不是.

编辑:我正在使用gunicorn,但经过一些进一步的研究,似乎我可能需要使用像nginx这样的东西与gunicorn一起完成我正在寻找的东西.有人可以就此提出建议吗?

这是我的settings.py

PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))

STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
STATIC_URL = '/static/'

STATIC_FILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

STATICFILES_DIRS = [os.path.join(PROJECT_ROOT, "staticfiles")]

这些设置可以为我的普通静态文件提供服务,但就像我说的那样,管理文件无效.我在控制台中尝试加载静态文件时得到404.当我转到管理URL时,我所呈现的是一个没有css的页面.只是原始浏览器显示登录字段和标题.我不知道这是否是whitenoise的限制,我需要在其他地方托管文件,或者如果我遗漏了什么.我宁愿保留heroku中的所有内容,因为它现在对我来说是免费的.

最佳答案 我一直有同样的问题 – 我的应用程序运行正常,但django管理员应用程序没有正确样式,因为它在heroku上部署时无法找到静态文件(它在我的本地计算机上渲染得很好)

我终于通过在本地机器上运行collectstatic来实现它:

python manage.py collectstatic

这会在我的主项目目录中创建一个静态/目录(即manage.py所在的目录).然后我将admin /子目录移动到/ static /目录(即settings.py所在的静态目录).然后我重新部署到heroku&现在管理网站的样式正确.希望这可以帮助!

点赞