まず、URLに名前を付ける必要があります。
url(r'^blog/(?P<item_id>\d+)/$', 'blog.ajax.remove_item', name='blog-item'),
次に、URLを変数としてモジュールに渡すことができます。
<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);
}
};
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);
}
};
正常に解決するには、トークンが正規表現タイプと一致する必要があることに注意してください({item_id}
で定義されているため、トークンとして使用できません\d+
)。
私はこのソリューションに少し不満を持っていたので、最後にdjangoでjavascriptを処理する独自のアプリケーションを作成しました:django.js。このアプリケーションを使用すると、次のことができます。
{% 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();
});