如何在 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 更改 embed src 的值?
如何在 VS Code 中更改 JavaScript Babel 和 JavaScript React 的默认缩进?
ASP.NET WebForm中JavaScript修改了页面上Label的值,如何在后台代码中获取