我已经关注了关于 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自动运行——就像文档中提到的那样。