如何将Django模板上下文变量传递给JS函数

时间:2014-02-11 22:58:31

标签: javascript ajax django

我正在尝试创建一个简单的网络链接切换,以便在我的应用中关注或取消关注问题。我接近使用信息My Own Like Button: Django + Ajax -- How?,但我不是那里。

我的问题是我无法动态地将question.id传递给我的JS函数,因为上面链接中的答案暗示。即

下面的硬连线JS代码可以正常工作。它将'12'作为绑定到/question/follow-unfollow-inline/的视图的有效参数传递。但是当我尝试用调用此JS代码的模板中的上下文变量'12'替换'{{ question.id }}'时,我的函数将字符串'{{ question.id }}'传递回/question/follow-unfollow-inline/而不是它的值。我该如何解决这个问题?

$(function () {
    $("#follow_unfollow_toggle").click(function () {
        $.ajax({
            type: "POST",
            url: "/question/follow-unfollow-inline/",
            data: { 'qid': '12' },
            success: function (e) {
                alert('Success!');
            }
        });
    });
});

目前,我在我的视图中使用@csrf_exempt,但我知道我应该将其作为数据传递。

1 个答案:

答案 0 :(得分:2)

您可以使用data-属性

在锚标记上定义它

模板:

<a id="follow_unfollow_toggle" href="#" data-qid="{{ question.id }}">Like</a>

Js文件:

$(function () {
    $("#follow_unfollow_toggle").click(function () {
        $.ajax({
            type: "POST",
            url: "/question/follow-unfollow-inline/",
            data: { 'qid': $(this).data('qid') },
            success: function (e) {
                alert('Success!');
            }
        });
    });
});