Skip to content

A small JavaScript utility library for use with Django projects

License

Notifications You must be signed in to change notification settings

Dimitri-Gnidash/django-js-utils

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dutils - Django JS Utils

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.

Reversing Django Urls from Javascript

Why is this useful

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.

What is included

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

Installation

  1. Install package using pip:

    pip install -e hg+https://github.com/Dimitri-Gnidash/django-js-utils.git#egg=django-js-utils
    
  2. Append app to your INSTALLED_APPS in settings.py:

    INSTALLED_APPS += ('django_js_utils',)
    
  1. 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>

Usage

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

TO-DO

  1. Handle the unnamed Django urls that result in <> in urls.js file, but are not handled in Javascript resolver.
  2. Write unit tests
  3. Promote the code

About

A small JavaScript utility library for use with Django projects

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 55.1%
  • Python 44.9%