Как автоматически перезагрузить Django при изменении файлов?
как автоматически контролировать .пай .js и другие файлы исходного кода для перезапуска приложения Django (или любого другого) и обновления браузера при изменении источника? Это возможно в Rails с помощью guard, в JS-приложениях с помощью grunt-contrib-watch и сопутствующего плагина браузера livereload. Как я могу сделать это для веб-приложений Python, таких как Django?
Я запускаю свой сервер Django с
foreman start
Это мой Procfile:
web: newrelic-admin run-program gunicorn app.wsgi
as предложено Heroku / Newrelic docs или обычным
python manage.py runserver
на runserver
метод перезапускает сервер .источник py изменяется, но не браузер и не смотрит другие файлы - я мог бы запустить guard рядом с ним, но тогда у меня есть два процесса, о которых я должен заботиться, тогда как grunt или rake предлагают унифицированные интерфейсы. Мне интересно, что рекомендуемый способ сделать это среди разработчиков Python?
Я не смог найти подробную, исчерпывающую документацию по этому вопросу - только неполные обсуждения здесь и здесь.
4 ответов
вам не нужно расширение браузера для выполнения автоматического обновления. Взгляните на https://github.com/tjwalch/django-livereload-server.
Я опубликовал более подробный ответ об этом в https://stackoverflow.com/a/36961244/2950621
Он работает с помощью manage.py команда (сервер) для мониторинга вашего .JS и другие статические файлы. Сервер отправляет сигнал в браузер через websockets. Существует некоторый клиентский код, введенный на каждая страница. Введенный код реагирует на сигнал и обновляет браузер.
С помощью python manage.py runserver
Это то, что больше всего используется. Вам придется использовать другой инструмент, такой как:http://livejs.com/ чтобы обновить сам браузер, так как Django действительно не знает об этом.
разочарованный всеми явными обновлениями, я создал расширение браузера для Firefox и Chrome, чтобы автоматизировать это. Расширение работает с приложением Django, которое вы добавляете в список приложений в INSTALLED_APPS. Вы можете узнать больше на GitHub РЕПО.
хотя РЕПО имеет весь исходный код, расширения также доступны в соответствующем веб-магазине. Просто найдите "автоматическое обновление Django". С их помощью вам просто нужно скопировать приложение в наш проект папка и включить его через INSTALLED_APPS. Я хотел добавить сценарий установки pip, но не нашел времени для этого.
HTH. Извиняюсь, если это звучит как самореклама.
установите это приложение django:
pip install django-livesync
в файле настроек django добавьте что-то вроде:
INSTALLED_APPS = (
'...',
'livesync',
'django.contrib.staticfiles',
'...',
)
MIDDLEWARE_CLASSES = (
'livesync.core.middleware.DjangoLiveSyncMiddleware',
)
остерегайтесь регистрировать "livesync" перед " django.ВНО.staticfiles' если вы используете его.
Теперь просто запустите сервер разработки:
python manage.py runserver
проверьте это для получения более подробной информации:https://github.com/fabiogibson/django-livesync