如何使用ajax在django视图中获取选中的对象?

如何使用ajax在django视图中获取选中的对象?,django,ajax,django-views,django-templates,Django,Ajax,Django Views,Django Templates,我对ajax非常陌生。这里我有一个django表单,表单中有一个复选框的表单组。 这里我想要的是,如果用户选中某个用户对象,我希望在表单提交之前立即在django视图中获取它。如果用户取消选中此选项,它也应该从django视图中删除。我该怎么做 表单提交后,它可以正常工作,但我希望在表单提交之前获得已检查的用户。因此,我认为在这种情况下,将需要ajax。但是我是ajax的初学者,所以我被困在这里了 模板 <div class="form-group"> <di

我对ajax非常陌生。这里我有一个django表单,表单中有一个复选框的表单组。 这里我想要的是,如果用户选中某个用户对象,我希望在表单提交之前立即在django视图中获取它。如果用户取消选中此选项,它也应该从django视图中删除。我该怎么做

表单提交后,它可以正常工作,但我希望在表单提交之前获得已检查的用户。因此,我认为在这种情况下,将需要ajax。但是我是ajax的初学者,所以我被困在这里了

模板

 <div class="form-group">
        <div class="checkbox">
          <input class="checkbox1" name="users" type="checkbox" value="{{user.pk}}"
                       id="user{{user.pk}}"/>
                <label for="user{{user.pk}}"></label>
        </div>
      </div>

在这种情况下,您需要通过
检查列表[]
javascript列表来查看,因此需要ajax 为此

  • 并根据复选框更改事件处理ajax请求

$('.checkbox1').change(函数(){//checkbox1更改事件
var checked_list=[];
$(“.checkbox1:checked”).each(函数(){
选中\u list.push(此值);
});
var formdata=new formdata();
$.ajax({
formdata.append('checked_list',checked_list)
append('csrfmiddlewaretoken',$('input[type=hidden')).val();
$.ajax({
url:“/profile\u upload”//替换为您的url
方法:'POST',
数据:formdata,
enctype:'application/x-www-form-urlencoded',
processData:false,
contentType:false,
成功:功能(数据){
警报(“显示返回数据”+数据)
},
错误:函数(错误){
警报(错误。错误)
}
});
});
});
views.py:根据逻辑定义视图
def(请求):
if request.method==“POST”:
user\u list=request.getlist('checked\u list')
返回JsonResponse(状态=200,数据={'data':'success'})
其他:
返回JsonResponse(状态=203,数据={'error':'unauthorize request.!!'})
如果您使用post请求定义
csrf\u令牌
,那么如果您的脚本 单页代码
formdata.append('csrfmiddlewaretoken',{%csrf_token%})通过这些链接执行


如果你发现了错误,让我知道

我更新我的答案查看您需要在更改复选框时处理请求阅读关于csrf令牌的post请求如果您使用get不使用csrf那么阅读如果有任何问题请让我知道如何在django视图中获取选中的用户?我更新我的答案您检查并阅读链接a给出如何基于表单post方法处理ajax请求
 <script>
   $(function(){
    var checked_lists = [];
    $(".checkbox1:checked").each(function() {
        checked_list.push(this.value);
    });
     $.ajax({
        url: "{% url 'my_url' %}",
         data:{
        checked_Lists: checked_list,
    }
        }
      });
   });
</script>
 print(self.request.POST.getlist('checked_lists'))
<script>
   $('.checkbox1').change(function(){ // checkbox1 change event 
    var checked_lists = [];
    $(".checkbox1:checked").each(function() {
        checked_list.push(this.value);
    });
    var formdata = new FormData();
    $.ajax({
            formdata.append('checked_list',checked_list)
            formdata.append('csrfmiddlewaretoken',$('input[type=hidden]').val());
            $.ajax({
                url:"/profile_upload", //replace with you url 
                method:'POST',
                data:formdata,
                enctype: 'application/x-www-form-urlencoded',
                processData:false,
                contentType:false,
                success:function(data){

                   alert("Display return data"+data)
                },
                error:function(error){
                    alert(error.error)
                }
            });
    });
   });
</script>

def <view-name>(request):
    if request.method=='POST':
       user_list = request.getlist('checked_list')
       return JsonResponse(status=200,data={'data':'success'})
   else:
       return JsonResponse(status=203,data={'error':'unauthorize request.!!'})