django_jquery_ajax二级联动菜单

html:
下拉框部分:

//区域
<span class= "col-xs-2">
        <label for="id_province">区域</label>

        <select class="form-control" id="id_province" name="province">
            <option selected="selected">请选择</option>
                     <option value="CE">CE</option>
                     <option value="CN">CN</option>
                     <option value="CS">CS</option>
                     <option value="EA">EA</option>
                     <option value="SW">SW</option>
                     <option value="SR">SR</option>
                     <option value="NR">NR</option>
                     <option value="NW">NW</option>
        </select>
    </span>
    
    //分公司,只留一个请选择,其他的不写
    <span class= "col-xs-2">
        <label for="id_city">分公司</label>

        <select class="form-control" id="id_ctiy" name="city">
            <option selected="selected">请选择</option>

        </select>
            
    </span>

ajax
##注意:如果用html模板,注意block块的位置,js中jquery要放在最上。模板上不要忘记留下block块,并在block块之前引入jquery

    <script type="text/javascript" src="{% static 'js/jquery-3.6.0.min.js' %}"></script>
    <script type="text/javascript" src="{% static 'plugins/echarts.min.js' %}"></script>


    {% block js%} 
    {% endblock%}
</body>
$('#id_province').change(function(){
    
            var prov_id = $('#id_province').val();        #获取区域下拉框的值
            
            $.ajax({
                type: "GET",                #定义方式
                dataType: 'json',            
                url:"/data/",						#定义路由
                data:{'prov_id':prov_id},                 #区域的值放在字典中
                success:function(res){                       #res是后端传来得值,res={br:[....]}

                    var content='';                   
                    data = res.br                                                 #获取key是br的value,即分公司list
                    $.each(data, function(key, value){                            #注意,这里的list是一个arry,遍历有2个,前者是数字序号,后者是list的值。

                        content += '<option>'+value+'</option>'        #拼装出option的html语句
                        
                        });
                    $('#id_ctiy').html(content)                 #填充到指定id

                               
                }
            });

        });

</script>

url:
一般会另外弄一个url专门处理ajax

path('data/', views.rg_br),                  #绑定路由

views

def rg_br(request):
    if request.method == "GET":
        rg = (request.GET.get('prov_id'))   #前往后传                  #即ajax中的data字典中的key为prov_id的value
        print(rg)
        list_model_br = list(models.Fcst.objects.filter(region = rg).values("branch").distinct())     #筛选model,取列,取distinct
        li_br = []                                                        #转成list
        for i in list_model_br:
            li_br.append(i['branch'])



        dd = {"br":li_br}    									 #传给前端的是br:[]
    return JsonResponse(dd,safe=False)					
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值