#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)
И это структура каталогов проекта
Комментарии:
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. я пробовал ваш метод, но все равно получаю тот же результат, сэр