我跟着官方Heroku docs on Django and Static Assets;我已經安裝dj-static
,並把它添加到我的requirements.txt
文件,正確地在我settings.py
文件中配置所有的變量:當我將Django應用程序部署到Heroku時,爲什麼不會自動運行collectstatic?
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。
我試過debugging使用heroku run
,但它只是複製靜態文件的預期。
我注意到,當我包括我的Procfile
的collectstatic
命令,即
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/
目錄都丟失了,但是,靜態文件仍在服務中!
我仍然想知道爲什麼不自動運行collectstatic
--就像文檔中提到的那樣 - 當我將Django應用程序部署到Heroku時。
檢查此http://stackoverflow.com/a/15858757/263989 – fasouto
@fasouto嘗試了它;沒有得到任何錯誤。我得到了一大堆「假裝複製......」和一個「284靜態文件複製」信息。 – 3cheesewheel