========================
django-livereload-server
This django app adds a management command that starts a livereload server watching all your static files and templates as well
as a custom runserver
command that issues livereload requests when the development server is ready after a restart.
Installation
Install package: ::
$ pip install django-livereload-server
Add 'livereload'
to the INSTALLED_APPS
, before 'django.contrib.staticfiles'
if this is used::
INSTALLED_APPS = (
...
'livereload',
...
)
Next you need to inject the loading of the livereload javascript. You can do this in one of two ways:
-
Through middleware by adding 'livereload.middleware.LiveReloadScript'
to MIDDLEWARE
(probably at the end)::
MIDDLEWARE = (
...
'livereload.middleware.LiveReloadScript',
)
-
Through a templatetag in your base.html
(or similar) template::
{% load livereload_tags %}
...
{% livereload_script %}
Either of these options will inject the livereload.js
script into your webpages if DEBUG
setting is on.
Configuration
If you need the livereload server to use a different host and port than the default 127.0.0.1 and 35729,
specify them by setting LIVERELOAD_HOST
and LIVERELOAD_PORT
in settings.py
.
Usage
Start the livereload server::
$ python manage.py livereload
keep the livereload server running.
Start the django development server as usual (in another console)::
$ python manage.py runserver
In the browser's address bar access your web app by doing::
127.0.0.1:8000 or localhost:8000
now every time you hit save in your editor, the django-development-server/livereload-server automatically updates the staticfiles
Customization
By default both template and staticfiles directories are watched.
You can ignore template directories using: ::
$ ./manage.py livereload --ignore-template-dirs
Or staticfiles directories using: ::
$ ./manage.py livereload --ignore-static-dirs
You can ignore file extensions: ::
$ ./manage.py livereload --ignore-file-extensions=.less,.scss
Extra files and/or paths to watch for changes can be added as positional arguments. By default livereload server watches the files that are found by your staticfiles finders and your template loaders. ::
$ python manage.py livereload path/to/my-extra-directory/
This will be excluded from the paths ignored by --ignore-template-dirs
and
--ignore-static-dirs
.
Host and port can be overridden with --host
and --port
options. ::
$ python manage.py livereload --host=myhost.com --port=9090
the runserver command python manage.py runserver
also accepts three additional options::
--nolivereload
to disable livereload functionality--livereload-host
to override both default and settings file specified host address--livereload-port
to override both default and settings file specified port
Background
This project is based on a merge of python-livereload <https://github.com/lepture/python-livereload>
_ and
django-livereload <https://github.com/Fantomas42/django-livereload>
_, excellent projects both and even better for
smooth django development when combined.