简单的Ajax请求将变量从模板保存到Django后台

0 投票
1 回答
3000 浏览
提问于 2025-04-18 01:50

我在用户资料模型中有一个分数字段,并且在jquery中有一个变量叫total。
我想在点击提交按钮后,把total的值存储到分数字段里。
为此,我想使用ajax来实现。

这里我尝试了一些东西。

$('#myButton').click(function(){
    var bjpFan=localStorage['bjpFan'];
    var total = parseInt(localStorage['total']);
    $.ajax({
      url: "/poll/score/",
      type:"GET",
      success: function(responseHTML){
       {% for sc in score1 %}
           var s={{sc.score}}
           alert(s);
       {% endfor %}
      }
    });
}); 

现在我想把这个值保存到后台。怎么才能保存这个单一的值呢?

view.py

def score(request):
if request.is_ajax():
    if request.method == 'GET':
        score1=UserProfile.objects.all()
        print "akash"
        print score1
        print type(score1)
        response = json.dumps({"SCORE":score})
        return HttpResponse(response,mimetype="application/json")

model.py 是

class UserProfile(models.Model):
    user = models.ForeignKey(User) 
    score = models.IntegerField(max_length = 50, blank = True,null = True)

我想把total存储到分数里……但是total是一个在jquery中声明的变量。

1 个回答

2

试试这个方法:

你的 HTML 代码:

$('#myButton').click(function(){
  var bjpFan=localStorage['bjpFan'];
  var userid = //get your user id in some way you can
  var total = parseInt(localStorage['total']);
  $.ajax({
    url: "/poll/score/",
    type:"GET",
    data: {total:total,userid:userid}
  }).done(function(data){
     alert(data);//do what you want to do with response
  });
}); 

你的 urls.py 文件:

url(r'/poll/score/$', 'score', name='score'),

你的 views.py 文件:

def score(request):
   if request.is_ajax():
     if request.method == 'GET':
        user = UserProfile.objects.get(id=request.GET.get('userid'))
        user.score = request.GET.get('total')
        user.save()
        return HttpResponse("%s" % user.score )

就这样。

撰写回答