Patchman : Некорректная работа веб-интерфейса Django в offline окружениях

Patchman : Django web interface not working correctly in offline environmentsЗамечено, что при использовании веб-интерфейса Patchman, работающего на базе веб-фреймворка Django, в контексте учётной записи, не имеющей доступа в интернет, возникает проблема корректного отображения веб-страниц. То есть сами по себе веб страницы загружаются и отображают данные, но видно, что не работают каскадные таблицы стилей и есть проблемы с веб-элементами, использующими JS. В этой ситуации, если запустить в браузере режим отладки (F12), то можно увидеть, что происходит попытка загрузки стилей и скриптов из интернета.

Broken Django web page styles in offline environments

Связно это с тем, что в шаблонах фреймворка Django по умолчанию используются ссылки на внешние интернет-ресурсы:

https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css
https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js
https://code.jquery.com/jquery.min.js

Первая идея, которая может появиться в качестве решения этой проблемы, - скачать недостающие файлы из интернета, разместить на локальном веб-сервере и переопределить их назначение в конфигурации Django так, как это описано здесь: django-bootstrap3 pre-configured settings. Но на самом деле, скачивать эти файлы в ситуации с Patchman не нужно, так как необходимые файлы уже есть в системе и даже, более того, находятся непосредственно в подкаталогах контента Patchman, доступных относительно корневого каталога веб-сайта.

/var/lib/patchman/static/rest_framework/js/jquery.min.js
/var/lib/patchman/static/rest_framework/js/bootstrap.min.js
/var/lib/patchman/static/rest_framework/css/bootstrap.min.css

Поэтому всё, что нужно сделать для исправления обозначенной проблемы, - внести переопределения в конфигурационный файл Patchman:

# nano /etc/patchman/local_settings.py

В конец файла добавим следующий блок переопределений путей к файлам:

BOOTSTRAP3 = {
    "css_url": "/patchman/static/rest_framework/css/bootstrap.min.css",
    "javascript_url": "/patchman/static/rest_framework/js/bootstrap.min.js",
    "jquery_url": "/patchman/static/rest_framework/js/jquery.min.js",
}

Для вступления изменений в силу перезапустим службу веб-сервера:

# systemctl status apache2.service

После этого очистим кеш браузера и снова проверим работу веб-интерфейса Patchman.

JS Scripts and CSS style of Django web pages in offline environment works fine

Теперь отображение веб-страниц должно работать корректно у всех пользователей, независимо от того есть у них доступ в интернет или нет.

Добавить комментарий