2014-02-11 42 views
2

我正尝试创建一个简单的Web链接切换,以便在应用程序中关注或取消关注问题。我靠近信息My Own Like Button: Django + Ajax -- How?,但我并不是那样。如何将Django模板上下文变量传递给JS函数

我的问题是我不能动态地将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,但我知道我应该把它作为数据。

+0

你尝试有Django的服务的JavaScript? –

+0

嗨。不知道这是否回答你的问题,但是当处于调试模式时,我的所有静态文件都由Django提供。否则,亚马逊S3。 – user2916527

+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!'); 
      } 
     }); 
    }); 
}); 
+0

非常感谢@dolan。我也意识到我需要将'id =“follow_unfollow_toggle”''改为'class =“follow_unfollow_toggle”',这样我的JS函数就可以解决问题列表中的任何问题,而不仅仅是第一个问题。 – user2916527

相关问题