Python django web 省市三级联动(读取本地存储的就是文件,建议打开json文件时用地址拼接)

#查询省市区
def selectCity(request):
    between=request.POST.get('ID')  #等于1 查询市 等于2 查询区
    city=request.POST.get('city')  #省或者直辖市
    area=request.POST.get('area') #市
    Str_json=""              #接收值
    # 省市读取
    k = open("static\shen.json", encoding='utf-8')  # 读取json文件
    h = k.read()
    k.close()
    setting_A = json.loads(h)  # 解析成json字符串
    if between=="1":
        for i in  setting_A:
            if i['region']==city:
                Str_json=i['regionEntitys']
                break
    else:
        for i in setting_A:
            zk=i['region']
            if i['region'] == city:
                for j in i['regionEntitys']:
                    if j['region'] == area:
                        Str_json=j['regionEntitys']
                        break
    Str_json=list(Str_json) #先变成list
    Str_json=json.dumps(Str_json)  #变成Json
    return JsonResponse({'ret': Str_json, 'Eor': 1})# 返回给前端
前台页面处理
     //更新下拉框的
ID处理方式
city 省
area市
    function select_city(ID,city,area)
    {
             $.ajax({
                    url:"{% url "UserInfo:selectCity" %}", //提交到那里
                    type:"POST", //提交类型
                    data:{"area":area,"ID":ID,"city":city}, //提交的数据
                    dataType:"json",
                    success:function(ret){ //success不会直接运行,当服务器有数据传输过来才会触发执行。
           // 匿名函数必须要有一个参数,用来接受数据,data1用来接受是服务器端返回字符串数据parseJSON
                                 var str=ret['ret'];
                                 var obj=JSON.parse(str);
                                 //alert(obj[0]['region']);
                                 if(ID==1)
                                 {//查询市
                                      $("#city_shi").empty();
                                      $("#city").empty();
                                       $.each(obj,function(index,value){
                                       $("#city_shi").append("<option value='"+(value.region=="市辖区"?"":value.region)+"'>"+(value.region=="市辖区"?"请选择市辖区":value.region)+"</option>");
                                       })
                                     select_city(2,city,obj[0]['region']);//绑定区下拉框
                                 }else
                                 {//查询区
                                       $("#city").empty();
                                       $.each(obj,function(index,value){
                                       $("#city").append("<option value='"+(value.region=="市辖区"?"":value.region)+"'>"+(value.region=="市辖区"?"请选择区域":value.region)+"</option>");
                                       })
                                 }

                                form.render('select'); //刷新select选择框渲染 layui 插件的
                        }
                  })
 
 

如果遇到错误为:类型“ValuesQuerySet”的对象不是JSON序列化。

解决办法为:先将ValuesQuerySet变成list 然后再用json.dumps()序列化

详细看上面代码

注:用的layui插件

猜你喜欢

转载自blog.csdn.net/qq_28218253/article/details/80336884
今日推荐