How to automatically reload Django when files change?

0

Issue

How to automatically monitor .py, .js and other source code files to restart a Django (or any other for that matter) application and refresh the browser when the source changes? This is possible in Rails using guard, in JS apps using grunt-contrib-watch and the accompanying livereload browser plugin. How can I do it for Python web apps such as Django?

I start my Django server with

foreman start

this is my Procfile:

web: newrelic-admin run-program gunicorn app.wsgi

as suggested by the Heroku/Newrelic docs or the usual

python manage.py runserver

The runserver method does restart the server on .py source changes, but not the browser and doesn’t watch other files – I could run guard alongside it, but then I have two processes I have to take care of, whereas grunt or rake offer unified interfaces. I’m wondering what is the recommended way of doing this among Python developers?

I could not find any detailed, comprehensive documentation on this – only incomplete discussions here and there.

Solution

You don’t need a browser extension to accomplish auto refreshes. Take a look at https://github.com/tjwalch/django-livereload-server.

I posted a more extensive answer about this at https://stackoverflow.com/a/36961244/2950621

It works by using a manage.py command (server) to monitor your .js and other static files. The server sends a signal to the browser via websockets. There is some client-side code injected on every page. The injected code responds to the signal and refresh the browser.

Answered By – nmgeek

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave A Reply

Your email address will not be published.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More