dutils is a small utility library that aims to provide JavaScript/Django developers with a few utilities that will help the development of RIA on top of a Django Backend.
One of the pillars of Django is DRY principle and hardcoding your urls in Javascript is violating that principle.
Moreover, building parametrized urls on the fly is error-prone and ugly.
A snippet of Javascript implementation of Django reverse function that can be found in dutils.js
A management command js_urls to generate a list of all of your Django urls
Install package using pip:
pip install -e hg+https://github.com/Dimitri-Gnidash/django-js-utils.git#egg=django-js-utils
Append app to your INSTALLED_APPS in settings.py:
INSTALLED_APPS += ('django_js_utils',)
Set the name of the file that will be generated by the management command in your project settings.py:
# Where to put the Javascript URL Routing file URLS_JS_GENERATED_FILE='/static/js/django-urls.js'
3. Add dutils.js and urls routing Javascript file to every web page where you plan to use the reverse function (likely just include in your base.html template), e.g.:
<script src="{{ STATIC_URL }}js/dutils.js"></script> <script src="{{ STATIC_URL }}js/django-urls.js"></script>
1. To generate a list of all available urls in the special format:
>>> python manage.js js_urls
To keep the list of urls up-to-date, it is recommended to include this command as part of the build process.
2. On the web page, reverse url as such:
>>> $.post(dutils.urls.resolve('time_edit', { project_id: 1, time_id: 2 }), ...
For more usage, see example.html
- Handle the unnamed Django urls that result in <> in urls.js file, but are not handled in Javascript resolver.
- Write unit tests
- Promote the code