Python省市区三级联动接口
2020-02-03 12:33
260 查看
省市区三级联动
在用户录入地址时,需要进行省市区的选择。在页面加载时,向后端请求省份数据,当用户选择确定省份后,向后端请求该省份的城市数据;在用户选择确定城市数据后,向后端请求该城市的区县信息。我们把这个过程称为省市区三级联动。
效果图
接口1、请求省份数据
请求方式:get/areas/
参数:无
返回数据格式:json
返回数据示例:[
{
“id”: 110000,
“name”: “北京市”
},
{
“id”: 120000,
“name”: “天津市”
},
{
“id”: 130000,
“name”: “河北省”
},
…
]
接口2、请求城市或区县数据
请求方式:get/areas/(?P\d+)/
参数:pk(所属上级id)
返回数据格式:json
返回数据示例:
{
“id”: “110100”,
“name”: “北京市”,
“subs”: [
{
“id”: “110101”,
“name”: “东城区”
},
{
“id”: “110102”,
“name”: “西城区”
}
]
}
由于省市区三级联动查询使用比较频繁,故此引入缓存,减少对数据库的查询,从而提升用户体验
使用环境:django1.11.11、python3.5 ubuntu16.04
安装第三方依赖:pip install drf-extensions
使用缓存有两种方式:
- 方式一:
在自定义的视图类中的请求方法上加@cache_response(timeout=60*60, cache=‘default’)
装饰器参数说明:
timeout 缓存时间
cache 缓存使用的Django缓存后端(即CACHES配置中的键名称)
装饰器也可以不加参数,如果不加参数会默认使用django配置文件里的参数
如下:
# DRF扩展 REST_FRAMEWORK_EXTENSIONS = { # 缓存时间 'DEFAULT_CACHE_RESPONSE_TIMEOUT': 60 * 60, # 缓存存储 'DEFAULT_USE_CACHE': 'default', }
- 方式二:
在自定义视图类上继承drf-extensions提供的扩展类
drf-extensions提供了三种扩展类
ListCacheResponseMixin跟返回列表数据类型的视图类结合使用(相当于查询所有省份信息视图类)
RetrieveCacheResponseMixin跟返回单一数据类型的视图类结合(相当于查询特定省份信息视图类)
CacheResponseMixin既可以结合列表类型的数据使用,也可以结合单一类型的数据使用(属于以上两种的结合体)
- 点赞 2
- 收藏
- 分享
- 文章举报
相关文章推荐
- android 省市区选择三级联动
- 多种版本省市区三级联动和精简的二维码扫描和底部标签栏分享
- JS省市区三级联动
- 详解Vue、element-ui、axios实现省市区三级联动
- jQuery实现省市区三级联动完整版源码演示下载
- C# JavaScript自定义控件,省市区三级联动选择,动态加载数据
- 省市区三级联动之-------spinner
- vue 省市区三级联动
- 省市区三级联动js和json
- 解决Js解析xml浏览器不兼容问题及省市区三级联动实现
- Android UI控件之Spinner实现省市区三级联动
- 从QQ网站中提取的纯JS省市区三级联动
- 移动端省市区三级联动选择器
- javascript省市区三级联动下拉框菜单实例演示
- js省市区三级联动
- 高仿iOS 滚轮实现 省市区 城市选择三级联动,无需自己配置省市区域的数据
- 用Vue、element-ui、axios实现省市区三级联动
- AndroidWheel 省市区三级联动(高仿IOS版本)
- rails 省市区 三级联动
- Bootstrap实现省市区三级联动(亲测可用)