zoukankan      html  css  js  c++  java
  • Django积木块八——三级联动

    三级联动

    前端需要的效果,省之后市之后现,创建model,查询所有的省的信息,json传到前面,之后通过省的id找到对应的市,是用异步实现的。

    # model
    class Sheng(models.Model):
        name = models.CharField(max_length=30)
    
    class Shi(models.Model):
        name = models.CharField(max_length=30)
        sheng = models.ForeignKey(Sheng)
    
    class Qu(models.Model):
        name = models.CharField(max_length=30)
        shi = models.ForeignKey(Shi)
    
    # 生成表并添加数据
    
    # url中
        url(r'^$',index),
        url(r'area/',pro),
        url(r'city(d+)/',city),
        url(r'dis(d+)/',dis),
    
    # views
    from django.http import JsonResponse
    from django.shortcuts import render
    
    def index(request):
        return render(request,'area.html')
    
    def pro(request):
        arealist = Sheng.objects.all()
        list = []
        for item in arealist:
            list.append({'id':item.id,'name':item.name})
        print list
        return JsonResponse({'data':list})
    
    def city(request,id):
        citylist = Shi.objects.filter(sheng_id=id)
        list = []
        for item in citylist:
            list.append({'id': item.id, 'name': item.name})
        print list
        return JsonResponse({'data': list})
    
    def dis(request,id):
        dislist = Qu.objects.filter(shi_id=id)
        list = []
        for item in dislist:
            list.append({'id': item.id, 'name': item.name})
        print list
        return JsonResponse({'data': list})
        
    # html
    <script src="{% static 'jquery-1.12.4.min.js' %}"></script>
        <script>
            $(function () {
                //查询省信息
                pro=$('#pro')
                $.get('/area/',function (dic) {//{data:[{},{},{}]}
                    $.each(dic.data,function (index, item) {//
                        pro.append('<option value="'+item.id+'">'+item.name+'</option>')
                    })
                })
    
                $('#pro').change(function () {
                    $.get('/city'+$(this).val()+'/',function (dic) {
                        city = $('#city')
                        city.css('display','inline-block')
                        city.empty().append('<option value="">请选择市</option>')
                        dis = $('#dis')
                        dis.empty().append(' <option value="">请选择区</option>')
                        $.each(dic.data,function (index,item) {
                            city.append('<option value="'+item.id+'">'+item.name+'</option>')
                        })
    
                    })
                })
    
                $('#city').change(function () {
                    $.get('/dis'+$(this).val()+'/',function (dic) {
                        dis = $('#dis')
                        dis.css('display','inline-block')
                        dis.empty().append(' <option value="">请选择区</option>')
                        $.each(dic.data,function (index,item) {
                            dis.append('<option value="'+item.id+'">'+item.name+'</option>')
                        })
                    })
                })
    
            });
        </script>
        
    <select id="pro">
        <option value="">请选择省</option>
    </select>
    
    <select id="city" style="display:none">
        <option value="">请选择市</option>
    </select>
    <select id="dis" style="display: none">
        <option value="">请选择区</option>
    </select>
    
  • 相关阅读:
    原生态ajax
    用js提交表单,没有submit按钮如何验证,使用button提交方法
    易买网吐血文档(图片拖不上来,要文档留下联系)
    时序图Sequence DiaGram
    starUML用例图
    泛型自动扩容的原理
    深入C#数据类型
    了解.NET框架
    自定义jstl标签实现页面级的权限控制
    SharePoint 2013 REST 服务使用简介
  • 原文地址:https://www.cnblogs.com/NeedEnjoyLife/p/6991267.html
Copyright © 2011-2022 走看看