前端在提交按钮附近添加
{% csrf_token %}
然后在js文件中的ajax如下写:
data = {
no: NO,
name: Name,
company: company,
product: product,
salesman: salesman,
area: area,
};
$.ajax({
cache:false,
type: "POST",
url: '/contract/manage/',
data: data,
async: false,
beforeSend: function(xhr, settings){
xhr.setRequestHeader("X-CSRFToken", $("input[name='csrfmiddlewaretoken']").val());
},
success: function(data){
console.log(data)
},
});
然后在后端如下写:
import json from django.http import JsonResponse from django.core import serializersdef post(self, request): #验证登录状态 if request.user.is_authenticated: #获取多条件数据 No = request.POST.get('no', '') name = request.POST.get('name', '') company = request.POST.get('company', '') product = request.POST.get('product', '') salesman = request.POST.get('salesman', '') area = request.POST.get('area', '') search_dict = dict() #一个个判断然后添加到字典中 if No: search_dict['NO'] = No if name: search_dict['name'] = name if company: search_dict['company'] = company if product: search_dict['product'] = product if salesman: search_dict['search_dict'] = search_dict if area: search_dict['area'] = area
#再用filter时使用多参数形式(加两个‘*’号) contract_list = Contract.objects.filter(**search_dict) #写json数据 responses = {} try:
responses["list"] = json.loads(serializers.serialize('json', contract_list)) responses['stauts'] = 'success' responses['error_num'] = 0 except Exception as e: responses['status'] = str(e) responses['error_num'] = 1 return JsonResponse(responses)
else:return JsonResponse({"msg":"fail"})
这样就完成了从前端传输动态数据到后端获取查询数据并返回给前端json数据的整个过程
转载自:
Django2.0 从前端提交post请求到后端多条件查询并返回json数据-蒲公英云 (dandelioncloud.cn)
另一种: