Я следил за официальной документацией Heroku по Django и статическим активам; Я установил 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/
отсутствует, и тем не менее статические файлы все еще обслуживаются!
Я все же хотел бы знать, почему collectstatic
не запускается автоматически, как упоминалось в документах, когда я развертываю свое приложение Django на Heroku.
Pretend to copy '...'
и284 static files copied.
в конце. - person 3cheesewheel   schedule 17.10.2013