刚自学了python不长时间, 也没怎么用起来,今天闲着没事干,结合layui实现了一个三级联动的问题
之前写过一个纯js(jquery)的,省市县都是自己写好的(json),然后根据change的改变来加载下一级或下两级
今天我写的是存在数据库中, 方法和上基本相同
先看下要做的结果:
思路解析
- 当我点击这个页面时, django会返回我village的数据,并渲染到这个页面的地区的地方, 既这一步我不做js加载
- 不选择地区, 位置是空的
- 当选择地区后,jquery的change事件结合ajax异步去加载对应location
- django后台根据ajax提交的village的value值, 将数据库中的location以json格式返回
- ajax请求成功后以拼接字符串的形式动态加载到location显示的地方(位置)
- layui注意加载完后form.render()重新渲染,否则看不到
数据库的设计
village: 地区
location: 地区对应的各个位置
说明: 每个区我也只找了几个而已, 不全
views加载页面的代码:
def zhiding_views(request):
if 'isLogin' in request.session:
#-------核心代码就两行
villages = Village.objects.all()
return render(request, 'zhiding.html', locals())
#-------
else:
return render(request, 'error.html')
<!-- zhiding.html -->
<form action="" class="layui-form">
<div class="layui-form-item">
<label class="layui-form-label">地区</label>