Как автоматически перезагрузить 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