用Django做一个省份选择器
做一个省份选择器
使用django做后端, mysql数据库, jQuery
列出结构主要的文件, 其它配置比较简单
- models.py
因为所有数据的结构基本一致, 把所有省份, 市和区全部存储一张表, 实现表的自连接
from django.db import models
class Pro(models.Model):
name = models.CharField(max_length=200)
parent = models.ForeignKey('self', null=True, blank=True)
mysql> desc selCity_pro;
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(200) | NO | | NULL | |
| parent_id | int(11) | YES | MUL | NULL | |
+-----------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
mysql>
插入数据类似这种
INSERT INTO `selCity_pro` VALUES ('110000', '北京市', null);
INSERT INTO `selCity_pro` VALUES ('110100', '东城区', '110000');
INSERT INTO `selCity_pro` VALUES ('110200', '西城区', '110000');
INSERT INTO `selCity_pro` VALUES ('110500', '朝阳区', '110000');
INSERT INTO `selCity_pro` VALUES ('110600', '丰台区', '110000');
INSERT INTO `selCity_pro` VALUES ('110700', '石景山区', '110000');
INSERT INTO `selCity_pro` VALUES ('110800', '海淀区', '110000');
......
- 模板
index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>首页</title>
<script src="/static/js/jquery-2.1.4/jquery.min.js"></script>
<script>
$(function(){
$.get('/pro', function(data){
con = $('#province');
$.each(data, function(index, item){
con.append("<option value='"+item.id+"'>"+item.name+"</option>")
});
});
$('#province').change(function(){
val1 = $(this).val();
$.get('/city/'+val1, function(data1){
con1 = $('#city');
con1.empty();
con1.append("<option>选择市</option>");
$.each(data1, function(index, item1){
con1.append("<option value='"+item1.id+"'>"+item1.name+"</option>")
})
})
});
$('#city').change(function(){
val2 = $(this).val();
$.get('/area/'+val2, function(data2){
con2 = $('#area');
con2.empty();
con2 = con2.append("<option>选择区</option>");
$.each(data2, function(index, item2){
con2.append("<option value='"+item2.id+"'>"+item2.name+"</option>")
})
})
});
})
</script>
</head>
<body>
<select id="province" name="province">
<option>选择省</option>
</select>
<select id="city" name="city">
<option>选择市</option>
</select>
<select id="area" name="area">
<option>选择区</option>
</select>
</body>
</html>
- 视图函数views.py
from django.shortcuts import render
from django.http import HttpResponse
import json
from models import Pro
from django.http import JsonResponse
def index(request):
return render(request, 'selCity/index.html')
def pro(request):
pro_objs = Pro.objects.filter(parent__isnull=True)
info_list = [{'id':pro.id, 'name':pro.name} for pro in pro_objs]
return HttpResponse(json.dumps(info_list), content_type="application/json")
def city(request, p_id):
city_objs = Pro.objects.filter(parent=p_id)
city_list = [{'id':city.id, 'name':city.name} for city in city_objs]
return HttpResponse(json.dumps(city_list), 'application/json')
def area(request, a_id):
area_objs = Pro.objects.filter(parent=a_id)
area_list = [{'id':area.id, 'name':area.name} for area in area_objs]
return HttpResponse(json.dumps(area_list), 'application/json')
用Django做一个省份选择器的更多相关文章
- 自然语言处理NLP学习笔记三:使用Django做一个NLP的Web站点
前言: 前面我们已经能初步实现一个中文自然处理语言的模型了,但交互界面是命令行的,不太友好. 如果想做一个类似http://xiaosi.trs.cn/demo/rs/demo的界面,那就还需要继续往 ...
- WPF 自己做一个颜色选择器
程序开发过程中,经常会遇到需要支持动态配置主题颜色的问题,通常,一个程序会有多种不同的颜色风格主题供选 有时候,更细致一些的地方,会需要支持自己配置颜色,这样我们就需要一个颜色选择器啦,下面是我自己开 ...
- 用Django做一个团队介绍
所用工具 Pycharm 社区版 Django 2.x Python 3.6.4 总目录 settings中的设置 总的路由设置 templates中的index.html文件 <!DOCTYP ...
- Unity3d—做一个年月日选择器(Scroll Rect拖动效果优化)— 无限滚动 + 锁定元素
最近..... 废话不多说上效果图 用的是UGUI 我先说思路 通过判断元素的位置信息来改变Hierarchy的顺序 实现无限滚动 改变位置的同时也要不断的调整Content的位置防止乱跳 元素锁定就 ...
- 利用Django做一个简单的分页页面
views代码: from django.shortcuts import render from django.conf import settings from booktest.models i ...
- 通过django搭建一个简易的web页面(实现数据的查询、添加、修改、删除)
一.创建django项目 通过命令创建: django-admin startproject 项目名称 创建app应用 python3 manage.py startapp 应用名 #这里manage ...
- 用Jquery做一个时间日期选择器
今天我们就用Jquery做一个时间日期选择器,当打开网页时,文本框里面显示的是当前的日期,点击文本框可以出现年.月.日的下拉菜单,并且可以选择,会根据年份的选择判断是否是闰年,从而改变二月的天数,闰年 ...
- 用Django加PIL做一个证件照模板生成器网页
最近在整理自己的简历,发现简历上面的ID照有些太老了,所以就准备重新准备一些证件照,刚好最近在弄自己的博客网站,想着直接做一个网页工具出来,直接生成证件照模板,这样还可以省去PS的麻烦.而且照片涉及到 ...
- 使用Vue+Django+Ant Design做一个留言评论模块
使用Vue+Django+Ant Design做一个留言评论模块 1.总览 留言的展示参考网络上参见的格式,如掘金社区: 一共分为两层,子孙留言都在第二层中 最终效果如下: 接下是数据库的表结构,如下 ...
随机推荐
- 如何自定义容器网络?- 每天5分钟玩转 Docker 容器技术(33)
除了 none, host, bridge 这三个自动创建的网络,用户也可以根据业务需要创建 user-defined 网络. Docker 提供三种 user-defined 网络驱动:bridge ...
- WebService小记
这个问题找了好多地方都没有结果,自己暂且总结一下吧,也不算是解决问题的根本途径,但是也不失为一种办法.当时用了wsimport wsdl2java xfire 都没有解决,大牛能解决的话,欢迎留言. ...
- 修改linux的系统时间
可以使用date命令.date用于打印或设置系统日期和时间.设置系统时间需要root权限.用法示例:设置系统日期成2015年08月13日,这样会把具体时间设置清空成00:00:00$ sudo dat ...
- jQuery 评分插件(转)
评分效果的小插件jQuery Raty.它提供的API相当丰富真的是让人爱不释手.详细文档及下载插件请移步这里. 基本使用 下面我们来实际操作,运用一下这个有爱的小插件. 需要做的事情非常简单,在页面 ...
- jquery取出所有包含class='engineer_val'的值
$(".engineer_val").each(function(){ //jquery取出所有包含class='engineer_val'的值 $(); });
- BeanUtils.copyProperties VS PropertyUtils.copyProperties
作为两个bean属性copy的工具类,他们被广泛使用,同时也很容易误用,给人造成困然:比如:昨天发现同事在使用BeanUtils.copyProperties copy有integer类型属性的bea ...
- spark streaming(2) DAG静态定义及DStream,DStreamGraph
DAG 中文名有向无环图.它不是spark独有技术.它是一种编程思想 ,甚至于hadoop阵营里也有运用DAG的技术,比如Tez,Oozie.有意思的是,Tez是从MapReduce的基础上深化而来的 ...
- [leetcode-567-Permutation in String]
Given two strings s1 and s2, write a function to return true if s2 contains the permutation of s1. I ...
- 安装 Node 和 gulp
gulp 是基于 node 实现的,那么我们就需要先安装 node. Node 是一个基于Chrome JavaScript V8引擎建立的一个平台,可以利用它实现 Web服务,做类似PHP的事. 打 ...
- 不用EF框架,完成完美实体映射,且便于维护!(AutoMapper,petapoco)
最近,需要搭建一个新项目,在需求分析时确定数据库中需要创建多个存储过程.所以如果还是用原来EF框架生成ADO.net实体模型的话,不利于修改. 主要是解决以下两个问题: 1.比如前端需要一个值,如果存 ...