`
yzjklove
  • 浏览: 64007 次
  • 性别: Icon_minigender_1
  • 来自: 广东省惠州市
社区版块
存档分类
最新评论

django中使用json做级联选择

阅读更多
使用JSON代替XML做为数据传输是个不错的选择,下面我们看看django中如何使用json。

首先下载json-py的类库,http://blog.ntsky.com/wp-content/uploads/json-py-3_4.zip

我们使用关联select作为例子:

<select name="city_id" id="city_id" onChange="getFacilityOptions(this.value)">   
{% if city_list %}   
{% for city in city_list %}   
<option value="{{city.id}}">{{city.name}}</option>   
{% endfor %}   
{% endif %}   
</select>   
<select name="facility_id" id="facility_id" style="display:none">   
</select>   


我们选择city时候关联出facility,这里使用jquery的ajax函数

function getFacilityOptions(city_id){   
    $.ajax({   
        type: "GET",   
        url: "/raw/facility_list/"+city_id+"/",   
        dataType:   "json",   
        success: function(json){   
            // 显示设施   
            $("#facility_id").show();   
   
            var facilitySelect = document.getElementById("facility_id");   
               
   
            // 清空   
            for ( var i=facilitySelect.options.length-1; i>-1; i– ){   
                facilitySelect[i] = null;   
            }   
   
            // 创建select选项   
            for(i=0;i<json.length;i++){   
                facilitySelect.options[i] = new Option();   
                facilitySelect.options[i].text = json[i].label;   
                facilitySelect.options[i].value = json[i].text;   
            }   
        }    
    })   
}   



通过ajax发送请求得到json数据,然后解析json数据输出select的option

# 城市设施列表   
def facility_list(request,city_id):   
   
    li = []   
       
    city = get_object_or_404(City, pk=city_id)   
    facility_list = CityFacility.objects.filter(city=city)   
    for object in facility_list:   
        d = {}   
        d['label'] = object.facility.name   
        d['text'] = object.facility.id   
           
        li.append(d)   
           
    return HttpResponse(json.write(li))   



这里定义了list,里面包含了一组Dictionary

这样级联选择就OK了。选择city发送ajax请求django,django返回json数据,javascript解析json数据得到facility的select选择。


分享到:
评论

相关推荐

    Django自关联实现多级联动查询实例

    这里使用了Django自带的 `JsonResponse` 来返回JSON格式的数据。 首先,在 `urls.py` 文件中定义URL路由,用来接收前端传来的PID参数,并将其传递给视图函数: ```python from django.urls import path from . ...

    全国省市区三级级联

    3. **使用场景**:在前端开发中,这些数据可以用于创建下拉菜单或级联选择器组件,用户可以选择自己的省份、城市和区县。例如,在注册页面、订单填写页面或者个人信息编辑页面,这样的功能非常常见。在后端,这些...

    全球国家,省份,城市 三级联动

    在IT领域,"三级联动"是一种常见的用户界面交互设计,主要应用于下拉选择框或级联菜单中。这种设计通常涉及到三个层次的数据关联,如在本例中的“全球国家,省份,城市”,用户在选择一个国家后,省份的选项会根据所...

    基于django的人脸检测Web平台搭建(基于Opencv)

    在本项目中,我们主要探讨如何使用Python的Django框架构建一个人脸检测Web平台,并结合OpenCV库实现图像处理和人脸识别功能。这个平台提供API接口,使得其他应用程序能够方便地调用并集成到它们自己的系统中。下面...

    基于Python+Django人脸识别门禁管理系统源码.zip

    3. **人脸识别技术**:该项目的核心部分可能涉及到人脸识别算法,如OpenCV库中的Haar特征级联分类器,或者深度学习模型如FaceNet或VGGFace。这些技术可以识别并验证用户的面部特征,从而决定是否允许通过门禁。 4. ...

    python毕业设计之基于opencv的疲劳检测系统(django)源码.zip

    在这个项目中,可能会使用Django的模型(models)来定义数据结构,并进行数据的增删改查操作,存储疲劳检测的记录和其他相关信息。 7. **API接口设计**: 为了与其他设备或服务交互,项目可能包含了RESTful API的...

    基于python+Django+opencv的疲劳检测系统源码数据库.zip

    1. **人脸识别**:OpenCV可以使用Haar级联分类器或深度学习模型如MTCNN来检测图像中的人脸。这些算法可以快速准确地定位到图像中的人脸区域。 2. **眼睛检测**:识别出人脸后,OpenCV可以进一步检测眼睛的位置,这...

    Django book2中文版

    - **生产环境部署**:介绍如何将Django项目部署到生产环境,包括服务器选择、配置等。 - **安全性考量**:部署过程中需要注意的安全事项,如HTTPS配置、敏感信息保护等。 ### 第十三章:输出非HTML内容 - **媒体...

    django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】

    在Django框架中,开发人员通常使用`models.py`文件来定义数据模型(数据库表结构),而`views.py`文件则用于处理用户请求并执行相应的业务逻辑,包括对数据库的增删改查操作。本篇内容将深入讲解如何在Django中通过`...

    通过代码简单了解django model序列化作用

    在你的视图(views.py)中,你可以使用这些序列化器将模型实例转换为JSON格式,以便在API响应中返回: ```python from rest_framework.response import Response from rest_framework.views import APIView from ....

    全球国家,省份,城市 三级联动.zip

    这种数据结构通常用于实现地理信息的下拉选择功能,例如在网页表单或者应用程序中,用户可以选择国家,然后根据所选国家加载对应的省份,再进一步选择具体的省份来加载对应的城市。这种被称为“三级联动”的交互设计...

    face-ditection-api:这是使用python open_cv,django_rest_framework的face_detetction_api

    在这个项目中,OpenCV可能被用来执行人脸检测任务,例如使用Haar级联分类器或者基于深度学习的方法如SSD(Single Shot MultiBox Detector)或MTCNN(Multi-Task Cascaded Convolutional Networks)。 2. **面部检测...

    python入门到高级全栈工程师培训 第3期 附课件代码

    04 做一个最简答web框架 05 MVC模式和MTV模式 06 django的一个简单应用 07 django静态文件之static 08 django的url控制系统 09 django的urlConf补充 第50章 01 django之视图函数的介绍 02 django视图之redirec 03 ...

    使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例

    在服务器端,你需要创建对应的API接口来处理这些请求,这可能涉及到Spring MVC、Django、Flask等框架,根据选定的省份ID查询城市并返回JSON数据。 总的来说,使用Ajax和jQuery配合数据库实现下拉框的二级联动,可以...

    waiter-facerecognition-微信小程序demo

    可能需要对用户数据进行加密存储,同时确保在传输过程中使用HTTPS等安全协议。 6. **用户体验设计**:微信小程序的界面设计需符合微信平台的交互规范,提供直观易用的用户界面,以增强用户满意度。良好的用户体验...

    juqery Easy ui

    8. **集成和兼容性**:EasyUI 可以与其他前端框架(如 Bootstrap)和后端框架(如 Spring、Django 等)配合使用,同时兼容主流浏览器,包括 Chrome、Firefox、Safari、IE 等。 在实际项目中,通过学习和熟练运用...

    work-management-app

    在这个特定的"work-management-app"案例中,标签为"HTML",意味着该应用可能在前端开发中使用了HTML(超文本标记语言)作为基础结构来构建用户界面。 HTML,全称HyperText Markup Language,是创建网页的标准标记...

    analisis-image-project

    7. **Web框架**: 如果项目有后端开发,可能会使用像`Django`、`Flask`这样的Python Web框架,或者Node.js的`Express`,它们能简化服务器端编程并提供API接口供前端调用。 8. **RESTful API**: 为了使前端与后端通信...

    emergency-leave-app:适用于公民咨询兰开夏郡西部的应用程序,用于管理紧急请假请求

    在紧急休假应用程序的开发过程中,前端工程师可能会使用现代框架如React、Vue.js或Angular,它们可以简化开发流程,提高代码复用性,并提供更好的性能。这些框架允许构建组件化结构,使得应用程序更易于维护和扩展。...

    gestion_ecole

    CSS遵循级联、继承和特异性原则,确保样式在整个文档中的应用有条不紊。 在"gestion_ecole-master"这个文件名中,"master"通常表示这是项目的主分支,即开发者的原始或默认版本。这可能意味着项目源代码、资源文件...

Global site tag (gtag.js) - Google Analytics