如何在javascript代码中更改django模板变量值?

时间:2018-09-29 12:21:25

标签: javascript django django-models django-templates

我的html页面上有一个视频。用户单击按钮时,视频开始播放。视频结束后,我需要更改用户参数“ views_num”。这是我的Javascript代码:

document.getElementById('get-views').onclick = function() {
  var videoE1 = document.getElementsByTagName('video')[0];
  videoE1.play();
  videoE1.addEventListener('ended', function () {
    {{ user.views_num| add:5}}
  }, false);
};

因此,当我进入html页面并单击按钮时,视频不会自动播放,我需要使用控制按钮启动它。同样在视频结束后,“ views_num”不会更改。如何更改变量值? 附言views_num是一个IntegerField。

1 个答案:

答案 0 :(得分:0)

您无法在JavaScript中更改Python / Django变量。您应该在Django中创建单独的url和视图,并在视频结束后使用ajax异步调用此视图。您应该在视图中传递用户的ID,然后提高用户的views_num并返回例如JsonResponse。参见下面的代码。当然,您应该将用户传递到模板的上下文,以便在{{ user.id }}中使用$.get

urls.py
path('user/count-views/<int:user_id>', views.count_views, name='count_views')

views.py
def count_views(request, user_id=None):
    user = get_object_or_404(User, id=user_id)
    user.views_num += 5
    user.save()
    return JsonResponse(data=user.views_num, safe=False)


# Call count_view via constructed url after video has ended
videoE1.addEventListener('ended', function () {
    $.get("user/count-views/" + {{ user.id }});
  }, false);