在Django中使用AJAX更新数据库

时间:2016-08-09 16:01:46

标签: python ajax django django-models django-views

所以我有一个AJAX命令,它将信息传递给一个views.py方法(我已经验证了传递工作来自HTML-> urls.py-> views.py,所以这一切都很好),但是一旦我在“views.py”中获得它,我就不知道如何在数据库中更新它。

如果可能的话,我试图避免使用forms.py文件,但如果这是我唯一可以选择的选项。

AJAX功能如下:

$.ajax({
    url : '/perform/acts/update/{{  act.id  }}/',
    type : "POST",
    data : {
        'csrfmiddlewaretoken' : "{{  csrf_token  }}",
        furtherData : furtherData
    },
    success : function(result) {}
});

views.py函数是......到目前为止,缺少,至少可以说,但这是我丢失的地方:

def update_act(request, furtherData_id):
    if request.method == 'POST':
      ?
      return HttpResponse(?)

这样做的一个重要原因是无需重新加载即可执行更新,而无需添加其他模块。我一直在使用Django只有几个星期,所以我可能很容易忘记...

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:4)

def update_act(request,furtherData_id):
    from django.http import JsonResponse
    if request.method == 'POST': 
        obj=MyObj.objects.get(pk=furtherData_id)
        obj.data=request.POST['furtherData']
        obj.save()
        return JsonResponse({'result':'ok'})
    else:
        return JsonResponse({'result':'nok'}

答案 1 :(得分:1)

您的观看功能:

def my_view_action(request, any_pk_id):
    from django.http import JsonResponse
    if request.method=='POST' and request.is_ajax():
        try:
            obj = MyModel.objects.get(pk=any_pk_id)
            obj.data_attr = request.POST['attr_name']
            obj.save()
            return JsonResponse({'status':'Success', 'msg': 'save successfully'})
         except MyModel.DoesNotExist:
            return JsonResponse({'status':'Fail', 'msg': 'Object does not exist'})
     else:
         return JsonResponse({'status':'Fail', 'msg':'Not a valid request'}


  

此功能直接在数据库中保存数据,为了验证它首先使用表格,然后继续保存操作。   

     
    

--- ---步骤
     - 为模型创建表单      - 通过请求/对象填写此模型的数据      - 在表单上运行验证,然后通过表单或模型保存到数据库。

  

了解更多信息 https://docs.djangoproject.com/en/1.10/topics/forms/modelforms/#the-save-method