Django:使用URL反向调用中的Javascript变量作为参数

Django:使用URL反向调用中的Javascript变量作为参数,javascript,django,Javascript,Django,有没有办法在Django模板url反向调用中使用.js变量作为参数?以下方法不起作用,这并不奇怪: "fnRender": function ( o, val ) { return '<a href="{% url update_task o.aData[0] %}">' + o.aData[1] +'</a>'; } “fnRender”:函数(o,val){ 返回“”; } 我知道我可以通过Django视图传递所需的数据,但不幸的是,我必须使用.js库

有没有办法在Django模板url反向调用中使用.js变量作为参数?以下方法不起作用,这并不奇怪:

"fnRender": function ( o, val ) {
     return '<a href="{% url update_task o.aData[0] %}">' + o.aData[1]  +'</a>';
}
“fnRender”:函数(o,val){
返回“”;
}

我知道我可以通过Django视图传递所需的数据,但不幸的是,我必须使用.js库中的数据

您将需要使用将值硬塞进URL客户端。在JavaScript中使用之前,不要忘记将其编码为JSON。

我通常做的是将某种默认参数传递到模板中的URL中,它充当哨兵,然后我可以在JavaScript中动态替换它。比如:

var url = '{% url update_task "foobarbaz" %}';
url = url.replace('foobarbaz', o.aData[0]);
return '<a href="' + url + '">' + o.aData[1]  +'</a>';
var url='{%url更新_任务“foobarbaz”%}';
url=url.replace('foobarbaz',o.aData[0]);
返回“”;

您可以将URL作为变量传递给模块:

<script src="{{ STATIC_URL }}js/my-module.js"></script>
<script>
$(function(){
    MyModule.init('{% url my_url %}');
});
</script>
或与许多

<script src="{{ STATIC_URL }}js/my-module.js"></script>
<script>
$(function(){
    MyModule.init({
        my_url: '{% url my_url %}',
        other_url: '{% url other_url "param" %}'
    });
});
</script>
我对这个解决方案有点不满意,最后我用django编写了自己的应用程序来处理javascript:。使用此应用程序,我可以执行以下操作:

{% load js %}
{% django_js %}
{% js "js/my-module.js" %}

不,当脚本运行时,该变量将是have value runtime,django模板解析哪个构建页面(比如编译时)。哦,这是一个很好的解决方案。非常感谢你!
// js/my-module.js
var MyModule = {
    init: function(options) {
        var my_url = options.my_url,
            other_url = options.other_url;

        doSomething(my_url);
    }
};
{% load js %}
{% django_js %}
{% js "js/my-module.js" %}
// js/my-module.js
var MyModule = {
    init: function() {
        var my_url = Django.url('my_url'),
            other_url = Django.url('other_url','param'),
            my_static_file = Django.file('some-file.json');

            doSomething(my_url);
    },
    other: function(param) {
        $.get(Django.url('other_url', param), {urlParam: 'urlParam'}, function(data) {
            doSomethingElse(data);
        });
};

$(function(){
    MyModule.init();
});