我已经关注了关于 Django 和 Static Assets 的 Heroku 官方文档;我已经安装dj-static
并将其添加到我的requirements.txt
文件中,正确配置了我文件中的所有变量settings.py
:
STATIC_ROOT = os.path.join(CONFIG_ROOT, 'served/static/')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(CONFIG_ROOT, 'static'),
)
这就是我的wsgi.py
样子:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "my_django_project.settings")
from django.core.wsgi import get_wsgi_application
from dj_static import Cling
application = Cling(get_wsgi_application())
的内容Procfile
:
web: gunicorn --bind 0.0.0.0:$PORT my_django_project.wsgi:application
在文档中,它说“collectstatic 在正确配置后会自动运行”。但是当我导航到我的网站时,显然没有 css。
我试过使用调试heroku run
,但这只是按预期复制静态文件。
我注意到当我在我的中包含collectstatic
命令时Procfile
,即
web: python my_django_project/manage.py collectstatic --noinput ; gunicorn -b 0.0.0.0:$PORT my_django_project.wsgi:application
...按预期工作,并提供静态文件。
然而奇怪的是,当我运行heroku run bash
并查看STATIC_ROOT
指向的目录时,那里什么都没有!事实上,整个served/
目录都丢失了,但静态文件仍在提供服务!
当我将 Django 应用程序部署到 Heroku 时,我仍然想知道为什么没有collectstatic
自动运行——就像文档中提到的那样。