First, you must provide your URL:
url(r'^blog/(?P<item_id>\d+)/$', 'blog.ajax.remove_item', name='blog-item'),
You can then pass the URLs as variables to your module:
<script src="{{ STATIC_URL }}js/my-module.js"></script> <script> $(function(){ MyModule.init('{% url blog-item item.id %}'); }); </script>
// js/my-module.js var MyModule = { init: function(url) { console.log(url); } };
You can use tokens in your url:
<script src="{{ STATIC_URL }}js/my-module.js"></script> <script> $(function(){ MyModule.init("{% url blog-item item_id='0000' %}"); }); </script>
// js/my-module.js var MyModule = { init: function(url) { var id = 1; this._url = url; console.log(this.url(id)); }, url: function(id) { return this._url.replace('0000', id); } };
Please note that your token must match the regex type for a successful solution (I cannot use {item_id} as a token because it is defined using \d+ ).
I was a bit dissatisfied with this solution, and I ended up writing my own javascript application using django: django.js . With this application I can do:
{% load js %} {% django_js %} {% js "js/my-module.js" %}
// js/my-module.js var MyModule = { init: function() { var id = 1; console.log(Django.url('blog-item', id)); } }; $(function(){ MyModule.init(); });
noirbizarre Nov 02 2018-12-12T00: 00Z
source share