【问题标题】:How to get the checked objects in django view with ajax?如何使用 ajax 在 django 视图中获取已检查的对象?
【发布时间】:2020-06-23 03:13:33
【问题描述】:

我对 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>

jquery

 <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'))

【问题讨论】:

    标签: django ajax django-views django-templates


    【解决方案1】:

    如果你需要通过 checked_list[] javascript list 来查看所以需要 ajax 为此

    • 并根据 checkbox change 事件处理 ajax 请求
    <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>
    
    

    views.py :您根据自己的逻辑定义视图

    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.!!'})
                
    
    

    如果您使用发布请求来定义csrf_token,那么如果您的脚本则传递它们 单页代码formdata.append('csrfmiddlewaretoken',{% csrf_token %});通过这些链接并执行

    Ajax Request For Sumbit Data

    如果你有错误,请告诉我

    【讨论】:

    • 我更新了我的答案,看到您需要处理更改复选框的请求 如果您使用 get 不使用 csrf,请阅读有关用于发布请求的 csrf 令牌,如果有任何问题请阅读
    • 如何在 django 视图中获取已检查的用户?
    • 我更新了您检查的答案并阅读了链接,该链接给出了如何根据表单 POST 方法处理 ajax 请求
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    相关资源
    最近更新 更多