2017-08-16 128 views
2

我有一个django网站部署到heroku和普通的静态文件正在工作,但管理员静态文件不是。Django管理静态文件无法在Heroku上使用whitenoise

编辑:我使用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。当我进入管理员网址时,我所看到的是一个没有CSS的页面。只需显示登录字段和标题的原始浏览器即可。我无法分辨这是否是whitenoise的限制,我需要在别处托管文件,或者如果我错过了某些东西。我宁愿将所有内容都保存在Heroku中,因为它现在对我来说是免费的。

+0

“不能正常工作”是什么意思?请阅读[问]有效提问的提示。 – Chris

+0

根本不工作。抱歉。我得到404用于管理静态文件 – csling

+0

管理静态文件是否在本地正常工作(当您在DEBUG模式下运行项目时)? –

回答

0

我一直有这个相同的问题 - 我的应用程序工作得很好,但django管理员应用程序的样式不正确,因为它部署在heroku上时找不到静态文件(它在我的本地计算机上呈现得很好)

我终于得到它通过我的本地机器上运行collectstatic工作:

python manage.py collectstatic 

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