【问题标题】:How to change django template variable value in javascript code?如何在 javascript 代码中更改 django 模板变量值?
【发布时间】:2019-03-05 05:14:20
【问题描述】:

我的 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。

【问题讨论】:

    标签: javascript django django-models django-templates


    【解决方案1】:

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

    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);
    

    【讨论】:

      猜你喜欢
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      • 2021-03-14
      • 1970-01-01
      • 1970-01-01
      • 2010-11-07
      • 1970-01-01
      • 2010-10-07
      相关资源
      最近更新 更多