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