首先,您應該爲您的網址:
url(r'^blog/(?P<item_id>\d+)/$', 'blog.ajax.remove_item', name='blog-item'),
然後,你可以通過網址作爲變量的模塊:
<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+
)。
我對這個解決方案有點不滿意,最後我寫了自己的應用程序來處理javascript與Django: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();
});
也檢查出一些叉子。 Dimitri-Gnidash使用管理命令構建URL。 ljosa創建了一個視圖,在飛行中建立它們。 – SystemParadox 2012-02-08 15:33:55
看來這個解決方案仍然需要硬編碼{url_name:pattern}字典。自動生成在dutils.conf.urls.example.js中找到的列表會很好。 – Fydo 2013-09-05 13:57:31
@Fydo使用它https://github.com/ierror/django-js-reverse – 2017-05-12 15:19:49