当前位置: 首页 > news >正文

django三级联动

HTML:
 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><!-- 1. 导入CSS的全局样式 --><link href="../static/css/bootstrap.min.css" rel="stylesheet"><!-- 2. jQuery导入,建议使用1.9以上的版本 --><script src="../static/js/jquery-3.7.1.js"></script><!-- 3. 导入bootstrap的js文件 --><script src="../static/js/bootstrap.min.js"></script><style>/* 自定义样式 */.selectpicker {border-radius: 20px;transition: all 0.3s ease;box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);}.selectpicker:hover {border-color: #66afe9;box-shadow: 0 2px 8px rgba(102, 175, 233, .6);}.bootstrap-select .dropdown-menu {border-radius: 15px;margin-top: 5px;}.bootstrap-select.btn-group .dropdown-toggle .filter-option {font-weight: 500;}.dropdown-menu > li > a {padding: 10px 20px;transition: background 0.3s;}.dropdown-menu > li > a:hover {background: linear-gradient(to right, #f8f9fa, #e9ecef);color: #333;}</style>
</head>
<body>
地址:
<select id="se1"><option>--请选择--</option>
</select>省
<select id="se2"><option>--请选择--</option>
</select>市
<select id="se3"><option>--请选择--</option>
</select>县{#<div class="container" style="margin-top: 30px;">#}
{#    <div class="row">#}
{##}
{##}
{#        <div class="col-sm-4">#}
{#            <div class="form-group">#}
{#                <select id="se" class="selectpicker form-control" data-style="btn-primary" title="-- 请选择省份 --">#}{#                    {% for province in provinces %}#}{#                        <option value="{{ province.id }}"#}{#                                {% if province.id == selected_id %}selected{% endif %}>#}{#                            {{ province.name }}#}{#                        </option>#}{#                    {% endfor %}#}{#                    {% for province in provinces %}#}{#                        <option value="{{ province.id }}">{{ province.name }}</option>#}{#                    {% endfor %}#}
{#                </select>#}
{#            </div>#}
{#        </div>#}
{##}
{##}
{#        <div class="col-sm-4">#}
{#            <div class="form-group">#}
{#                <select id="se1" class="selectpicker form-control" data-style="btn-success" title="-- 请选择城市 --">#}
{#                </select>#}
{#            </div>#}
{#        </div>#}
{##}
{#        <div class="col-sm-4">#}
{#            <div class="form-group">#}
{#                <select id="se2" class="selectpicker form-control" data-style="btn-info" title="-- 请选择区县 --">#}
{#                </select>#}
{#            </div>#}
{#        </div>#}
{#    </div>#}
{#</div>#}<script>//页面就绪函数$(function () {//初始化值 把省份查询出来$.ajax({url: "/three/",dataType: "json",type: "post",data: {method: "get1"},success: function (date) {console.log(date);//清空select  下拉框// $("#se1").children().not(":eq(0)").remove();//遍历数据for (var i = 0; i < date.length; i++) {console.log(date[i].name);$("#se1").append("<option value=" + date[i].id + ">--" + date[i].name + "--</option>");}}});});//下拉框2  当下拉框 省1内容发生改变,我就执行$("#se1").change(function () {//你选择是那个省   用来当做父idvar id = $("#se1").val();// alert("下拉框被改变" + id);$.ajax({url: "/three/",type: "post",data: {method: "get",id: id},dataType: "json",success: function (date) {//清空select  下拉框$("#se2").children().not(":eq(0)").remove();$("#se3").children().not(":eq(0)").remove();//遍历数据for (var i = 0; i < date.length; i++) {console.log(date[i].name);//追加$("#se2").append("<option value=" + date[i].id + ">--" + date[i].name + "--</option>");}}});});//下拉框3  当下拉框2内容发生改变,我就执行$("#se2").change(function () {var id = $("#se2").val();$.ajax({url: "/three/",type: "post",data: {method: "get3",id: id},dataType: "json",success: function (date) {//清空select  下拉框$("#se3").children().not(":eq(0)").remove();//遍历数据for (var i = 0; i < date.length; i++) {console.log(date[i].name);$("#se3").append("<option value=" + date[i].id + ">--" + date[i].name + "--</option>");}}});});</script></body>
</html>

model.py
 

from django.db import modelsclass City(models.Model):name = models.CharField(max_length=50)province = models.ForeignKey('Province', models.DO_NOTHING)class Meta:managed = Falsedb_table = 'city'class District(models.Model):name = models.CharField(max_length=50)city = models.ForeignKey(City, models.DO_NOTHING)class Meta:managed = Falsedb_table = 'district'class Province(models.Model):name = models.CharField(max_length=50)class Meta:managed = Falsedb_table = 'province'

view.py
 

def three(request):global dataif request.method == "GET":print("跳转页面")return render(request, "三级联动.html")else:print("post请求")method = request.POST.get("method")print("[POST] 收到method参数:", method)  # 调试关键参数if method == "get1":provinces = Province.objects.all()print("[get1] 省份数据:", provinces)  # 验证数据格式 因为QuerySet对象本身不可序列化。所以必须先将其转换为列表或类似结构。data = [{'id': p.id, 'name': p.name} for p in provinces]print(data)# 建议所有数据接口返回统一格式return JsonResponse(data, safe=False)  # 必须转为列表 + safe=Falseelif method == 'get':print("[POST] 收到method参数:", method)parent_id = request.POST.get('id')cities = City.objects.filter(province=parent_id)data = [{'id': c.id, 'name': c.name} for c in cities]return JsonResponse(data, safe=False)elif method == 'get3':print("[POST] 收到method参数:", method)parent_id = request.POST.get('id')areas = District.objects.filter(city=parent_id)data = [{'id': a.id, 'name': a.name} for a in areas]return JsonResponse(data, safe=False)

url.py
 

urlpatterns = [path('three/', views.three),]

相关文章:

  • 【硬核DIY · 嵌入式AI】ESP32碰上AI——用Arduino在ESP32-S3上实现AI音频分类
  • 如何安全配置数据库(MySQL/PostgreSQL/MongoDB)
  • 华为OD机试真题——数据分类(2025B卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
  • 「AR眼镜+智慧应急管理平台+视频联网」——矿山能源数智化转型的“安全之眼”与“效率引擎”
  • 如何在 Django 中集成 MCP Server
  • AI时代新词-AI增强现实(AI - Enhanced Reality)
  • [Java实战]Spring Boot整合达梦数据库连接池配置(三十四)
  • Python——day37早停策略和模型权重的保存
  • pyqt中添加资源文件
  • 2025.05.09【Bubblemap】气泡图深入解析
  • numpy与matplotlib学习——数据可视化入门
  • Selenium 测试框架 - .NET
  • 因重新安装python新版本,pycharm提示找不到python.exe(No Python at“c:\python.exe“)问题解决方法
  • AI时代新词-AI伦理(AI Ethics)
  • 李沐动手深度学习(pycharm中运行笔记)——10.多层感知机+从零实现+简介实现
  • Pycharm的简单介绍
  • docker compose yml 启动的容器中,如何使用linux环境变量赋值
  • 3DVR拍摄指南:从理论到实践
  • 【愚公系列】《生产线数字化设计与仿真》004-颜色分类站仿真(基础概念)
  • JAVA 学习日志
  • 新疆建设兵团职称网站/站长工具是干嘛的
  • 深圳附近做个商城网站找哪家公司好/百度小说风云榜排行榜官网
  • 深圳营业执照代办机构/淘宝seo优化是什么
  • 小网站怎么赚钱/企业营销策划方案
  • 做编程的网站有哪些方面/哪些浏览器可以看禁止访问的网站
  • 网站建设与服务技能实训/抖音seo怎么做的