Django:使用URL反向调用中的Javascript变量作为参数
有没有办法在Django模板url反向调用中使用.js变量作为参数?以下方法不起作用,这并不奇怪: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库
"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();
});