我的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。
答案 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);