СТАТИЧЕСКИЕ (CSS И JS) ФАЙЛЫ НЕ РАБОТАЮТ ПОСЛЕ ЗАГРУЗКИ ВЕБ-САЙТА НА HEROKU

#python #django #heroku #django-views #django-templates

#python #django #heroku #django-просмотры #django-шаблоны

Вопрос:

Я только что загрузил свой веб-сайт на heroku, файлы css и javascript отлично работают на localhost, но не работают после развертывания. Я также убедился, что выполнил эту команду python manage.py collectstatic , которую я выполнял как в рабочей среде, так и в среде разработки, но все еще не решает проблему. Я включил необходимые коды, которые были бы полезны, я также включил изображения обоих экземпляров и моего каталога проекта

Settings.py

 STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles/')
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
  

urls.py

 from django.conf.urls.static import static
from django.conf import settings

urlpatterns  = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns  = static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
  

Это изображение на localhost

Это изображение на heroku введите описание изображения здесь

И это структура каталогов проекта

введите описание изображения здесь

Комментарии:

1. Запускал ли heroku collectstatic , проверял ваши журналы сборки

2. @FalseDev Heroku запустил команду collectstatic. я тоже это сделал, но результаты все те же.

Ответ №1:

Django не обслуживает статический файл в рабочей среде, и по умолчанию Heroku не поддерживает это, если вы не добавите whitenoise в свой проект, пожалуйста, выполните следующие действия, надеюсь, это поможет вам

Вы можете следовать официальной документации Heroku для предоставления статического файла на производстве.

Комментарии:

1. Большое спасибо, я проверю это

Ответ №2:

 > Just replace your code with these lines

>urls.py

urlpatterns  = static(settings.STATIC_URL,document_root=settings.STATICFILES_DIRS[0])

urlpatterns  = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

> settings.py
BASE_DIR = Path(__file__).resolve().parent.parent

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static")
]


MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
  

Убедитесь, что вы запускаете команду с помощью командной строки heroku:
heroku run python manage.py собирать статические

Комментарии:

1. для указанного вами BASE_DIR потребуется ли библиотека pathlib

2. Файловая система Heroku не поддается изменению, heroku run python manage.py collectstatic ничего не изменит

3. я попытался использовать указанный вами BASE_DIR, но получил сообщение об ошибке «путь не определен»

4. Но когда я попытался развернуть веб-сайт в первый раз, я получил сообщение об ошибке, когда heroku запустил команду collectstatic, мне пришлось очистить свои статические файлы, после чего это сработало, и я также успешно выполнил команду

5. я пробовал ваш метод, но все равно получаю тот же результат, сэр