簡體   English   中英

Django:將URL反向調用中的Javascript變量用作參數

[英]Django: Use Javascript variable in URL reverse call as parameter

有沒有一種方法可以將.js變量用作Django模板網址反向調用中的參數? 下面的方法不起作用,這並不奇怪:

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

我知道我可以通過Django視圖傳遞所需的數據,但是不幸的是,我必須使用.js庫中的數據。

我通常要做的是將某種默認參數傳遞到模板中的URL中,該參數充當哨兵,然后可以在Javascript中動態替換該哨兵。 就像是:

var url = '{% url update_task "foobarbaz" %}';
url = url.replace('foobarbaz', o.aData[0]);
return '<a href="' + url + '">' + o.aData[1]  +'</a>';

您可以將url作為變量傳遞給模塊:

<script src="{{ STATIC_URL }}js/my-module.js"></script>
<script>
$(function(){
    MyModule.init('{% url my_url %}');
});
</script>
// js/my-module.js
var MyModule = {
    init: function(url) {
        doSomething(url);
    }
};

或很多

<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>
// js/my-module.js
var MyModule = {
    init: function(options) {
        var my_url = options.my_url,
            other_url = options.other_url;

        doSomething(my_url);
    }
};

我對此解決方案有些不滿意,最后我編寫了自己的應用程序來使用django處理javascript: django.js 使用此應用程序,我可以執行以下操作:

{% 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();
});

您將需要在JavaScript中使用字符串格式將值刺入URL客戶端。 在JavaScript中使用它之前,請不要忘記將其編碼為JSON。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM