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

Posted

技术标签:

【中文标题】如何在 javascript 代码中更改 django 模板变量值?【英文标题】:How to change django template variable value in javascript code? 【发布时间】: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。

【问题讨论】:

【参考方案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);

【讨论】:

以上是关于如何在 javascript 代码中更改 django 模板变量值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JavaScript 中更改元素的样式属性?

如何使用 JavaScript 更改 embed src 的值?

如何在 VS Code 中更改 JavaScript Babel 和 JavaScript React 的默认缩进?

ASP.NET WebForm中JavaScript修改了页面上Label的值,如何在后台代码中获取

如何更改 javascript 函数以针对所有 ID 后跟数字

如何在 javascript 中成功更改标题/段落的字体? [关闭]