django实现省市县三级联动

1.创建项目和应用后,首先在settings.py文件中配置mysql数据库,并创建数据库[省市区的sql文件,网上很多]

2.创建models模型,进行数据迁移

3.创建template模板文件area1.html

4.进行urls路由配置

5.编辑views视图函数

1.modles.py

class AreaInfo(models.Model):
    atitle = models.CharField(max_length=30)  
    aParent = models.ForeignKey('self', null=True, blank=True)  

2.urls.py 

from django.conf.urls import url
from . import views
urlpatterns=[
    url(r'^area1/$', views.area1),
    url(r'^province/$', views.province),
    url(r'^city_(\d+)/$', views.city),
    url(r'^county_(\d+)/$', views.county),
]

3.views.py

from django.shortcuts import render
from .models import AreaInfo
from django.http import HttpResponse, JsonResponse

def area1(request):
    return render(request, 'booktest/area1.html')


# 获取省数据
def province(request):
    provinceList = AreaInfo.objects.filter(aParent__isnull=True)
    list1 = []
    for item in provinceList:
        list1.append([item.id, item.atitle])
    return JsonResponse({'data': list1})


# 获取市数据
def city(request, pid):
    print(pid)
    cityList = AreaInfo.objects.filter(aParent_id=pid)
    list1 = []
    for item in cityList:
        list1.append([item.id, item.atitle])
    return JsonResponse({'data': list1})


# 获取区县数据
def county(request, pid):
    print(pid)
    countyList = AreaInfo.objects.filter(aParent_id=pid)
    list1 = []for item in countyList:
        list1.append([item.id, item.atitle])
    return JsonResponse({'data': list1})

4.area.html

<html>
<head>
    <title>省市区列表</title>
    <script type="text/javascript" src="/static/js/jquery-1.12.4.min.js"></script>
    <script>
        $(function () {
            //获取所有省份
            $.get('/province/', function (dic) {
                pro = $('#pro')
                $.each(dic.data, function (index, item) {
                    pro.append('<option value=' + item[0] + '>' + item[1] + '</option>');
                })
            })
            //获取市信息
            $('#pro').change(function () {
                $.get('/city_' + $(this).val() + '/', function (dict) {
                    city = $('#city');
                    city.empty().append('<option value="">请选择市</option>');
                    $('#county').empty().append('<option value="">请选择区县</option>');
                    $.each(dict.data, function (index, item) {
                        city.append('<option value=' + item[0] + '>' + item[1] + '</option>');
                    })
                });
            });

            //获取区县信息
            $('#city').change(function () {
                $.get('/county_' + $(this).val() + '/', function (dict) {
                    county = $('#county');
                    county.empty().append('<option value="">请选择区县</option>');
                    $.each(dict.data, function (index, item) {
                        county.append('<option value=' + item[0]+ '>' + item[1] + '</option>');
                    })
                })
            });
        })

    </script>
</head>
<body>
<select id="pro">
    <option value="">请选择省</option>
</select>
<select id="city">
    <option value="">请选择市</option>
</select>
<select id="county">
    <option value="">请选择区县</option>
</select>
</body>
</html>

5.setting.py配置mysql数据库

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': "area",
        'HOST': "127.0.0.1",
        'PORT': 3306,
        'USER': "root",
        'PASSWORD': '123456',
    }
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值