Django2.0 从前端提交post请求到后端多条件查询并返回json数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/soulwyb/article/details/86598530

前端在提交按钮附近添加

{% 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 serializers

    def 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数据的整个过程

猜你喜欢

转载自blog.csdn.net/soulwyb/article/details/86598530