【问题标题】:Django: How can I update my database using an AJAX request?Django:如何使用 AJAX 请求更新我的数据库?
【发布时间】:2017-05-29 05:40:45
【问题描述】:

在我的网络应用程序中,我的用户除了计时器外还有硬币余额。当计时器倒计时结束时,我希望他们的硬币余额增加。

在 Django 中,我使用以下方法访问用户的硬币余额: {{ request.user.profile.coins }},我的 JS 计时器是这样的:

function startClock () {
timeInterval = setInterval(function () {
    var t = getTimeLeft(deadline);
    minutesSpan.innerHTML = ("0" + t.minutes).slice(-2);
    secondsSpan.innerHTML = ("0" + t.seconds).slice(-2);

    if (t.total <= 0) { 
        clearInterval(timeInterval);

if (i === 7) {
  $(".reset, .start-pomodoro").addClass('hidden');
  $(".start-break2").removeClass('hidden');
}

        else if ((i % 2) === 1) {
          $(".reset, .start-pomodoro").addClass('hidden');
  $(".start-break1").removeClass('hidden');
        }

        else {
  $(".start-pomodoro").removeClass('hidden');
        }
    }
}, 1000);

如何让if语句执行前,用户的币余额增加?

【问题讨论】:

  • 调用服务器请求增加硬币?
  • 由于您使用的是JQuery,建议您阅读$.ajax函数。然后,您可以创建一个增加硬币余额的视图,并使用 ajax 异步调用此视图(即不刷新页面)。
  • 这听起来像是我在寻找@Selcuk,我会调查一下!
  • @e4c5 我刚刚阅读了塞尔丘克的答案。他正在指明正确的方向。你能不能通过它。遇到麻烦时告诉我们。
  • 你能在@Selcuk 下方查看我的尝试吗?

标签: javascript jquery ajax django database


【解决方案1】:
@login_required(login_url='users/login')                                                                 
    def coin_increase(request):
        user = User.objects.get(username=request.user)
        user.profile.coins += 5
        user.save()
        return render(request, 'home.html', {'home': home})

这看起来怎么样?

【讨论】:

  • 请不要发布新问题作为答案,而是更新您的原始问题。如果您对此进行了测试并且有效,那就去做吧。作为旁注,您不需要(如果您只是丢弃 JQuery 代码中的结果,它无论如何都不会工作)从 ajax 视图返回模板。一个简单的HttpResponse 就足够了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-11
  • 1970-01-01
  • 1970-01-01
  • 2016-12-15
  • 1970-01-01
  • 1970-01-01
  • 2010-12-03
相关资源
最近更新 更多