我有一个部署到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中的所有内容,因为它现在对我来说是免费的。
答案 0 :(得分:1)
我一直有同样的问题 - 我的应用程序工作得很好,但django管理员应用程序没有正确样式,因为它在heroku上部署时无法找到静态文件(它在我的本地计算机上渲染得很好)
我终于通过在本地机器上运行collectstatic来实现它:
python manage.py collectstatic
这会在我的主项目目录中创建一个静态/目录(即manage.py所在的目录)。然后我将admin /子目录移动到/ static /目录(即settings.py所在的静态目录)。然后我重新部署到heroku&现在管理网站的样式正确。希望这有帮助!