带有ajax的Django模板变量

时间:2020-04-10 15:41:37

标签: javascript ajax django-templates

如何使用有关Ajax成功的响应数据来更新Django for循环模板变量。对象的状态在数据库中正在更新,但我无法获取它来更新模板。如果我删除+ response.applicant_pk,则模板会更新,但始终只是for循环中的第一项

<div id="app_status_" class="_button__base_ _blue__button">
    <strong>{{applicant.status}}</strong>
</div>

def applicant_status_change(request, applicant_id):

    response_data = {}
    if request.method =='POST' and request.is_ajax():
        try:
            applicant = Applicant.objects.get(pk=applicant_id)
            position = applicant.applied_for.id
            position = Position.objects.get(id=position)
            count = position.get_all_applied_users_count()
            applicant.status = request.POST['applicant_status']
            applicant.pk = request.POST['pk']

            response_data = {
            "applicant_status": applicant.status,
            "applicant_pk":applicant.pk
            }
            applicant.save()
            return JsonResponse(response_data)
        except Applicant.DoesNotExist:
            return JsonResponse({'status':'Fail', 'msg': 'Object does not exist'})
    else:
        return JsonResponse({'status':'Fail', 'msg':'Not a valid request'})



    $(".dropdown-item").click(function (e) {

    var applicant_stat = $(this).text();
    var pk = "{{ applicant.pk }}"

    $.ajax({
      url : '/dashboard/applicant/status/{{  applicant.pk  }}/',
      type : "POST",
      data : {
        'csrfmiddlewaretoken' : "{{  csrf_token  }}",
        'applicant_status': applicant_stat,
        'pk': pk
      },
      success: function(response) {
        $('#app_status_'+ response.applicant_pk).empty().append(response.applicant_status);
      },
    });
  });

1 个答案:

答案 0 :(得分:0)

如果对其他人有帮助:我尚未将申请人pk添加到div ID

<div id="app_status_{{applicant.pk}}" data-pid="{{ applicant.pk }}" class="_button__base_ _blue__button">{{applicant.status}}
</div>