Проблема статических файлов при обновлении Django до 4.2 в админке

В настоящее время я использую django 3.2 и хотел бы вскоре перейти на версию 4.2. Это происходит в локальной среде и с помощью python manage.py collectstatic. Однако проблема возникает, когда я пытаюсь развернуть это в среде разработки.

Новые статические файлы администратора не загружаются, из-за чего страница администратора django выглядит неработоспособной. В частности, в django 4.2 появился статический файл dark_theme.css, который возвращает ошибку 404 при просмотре сетевой вкладки браузера. В моем локальном окружении этот файл возвращает 200 ok.

Это наиболее похожая тема на мою проблему, которую я смог найти на официальном форуме django, однако здесь нет четкого решения проблемы (возможно, потому что существует множество причин, по которым она может возникнуть)

Я использую nginx для сервера. У нас есть CI-процесс, который запускается collectstatic, затем копирует результаты в контейнер docker, и у меня есть такая конфигурация nginx для получения статических файлов:

 location /static/ {
    autoindex on;
    alias /usr/share/nginx/html/static/;
 }

В настройках django у меня такая конфигурация:

STATIC_ROOT = BASE_DIR / "ui/build/static"
STATIC_URL = "/static/"

Так как статические файлы генерируются на STATIC_ROOT, то контейнер докера корректно копирует их на /usr/share/nginx/html/.

Я попробовал проделать тот же процесс, но с флагом --clear для команды collectstatic, но безуспешно. Я также попробовал обновиться до версии django 4.2.0, так как некоторые люди сообщали, что эта версия работает, но опять же безрезультатно. И, конечно, я попробовал обновить кэш браузера

Не уверен, что это еще может быть, похоже, что статические файлы есть (в частности, dark_theme.css, кажется, существует в нужном месте), но при получении файлов из браузера я получаю 404.

Любые мысли или другие вещи, которые я могу попробовать/проверить, будут оценены по достоинству, спасибо.

Это довольно распространенная проблема, которая может быть вызвана множеством причин, вот в чем заключалась моя проблема:

Ранее вот как собирался докер-контейнер:

poetry run python manage.py collectstatic
npm install
npm run build
docker build ...

Проблема заключалась в том, что сборка npm перезаписывала статические файлы, поскольку они оба находились в маршруте /build/static, решением было поменять их местами. Только с этим проблема осталась, также нужно было добавить --clear в collectstatic.

npm install
npm run build
poetry run python manage.py collectstatic --clear
docker build ...
Вернуться на верх