您的位置:首页 > 编程语言 > Python开发

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

使用缓存有两种方式:

  1. 方式一:
    在自定义的视图类中的请求方法上加@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',
}
  1. 方式二:
    在自定义视图类上继承drf-extensions提供的扩展类
    drf-extensions提供了三种扩展类
    ListCacheResponseMixin跟返回列表数据类型的视图类结合使用(相当于查询所有省份信息视图类)
    RetrieveCacheResponseMixin跟返回单一数据类型的视图类结合(相当于查询特定省份信息视图类)
    CacheResponseMixin既可以结合列表类型的数据使用,也可以结合单一类型的数据使用(属于以上两种的结合体)
  • 点赞 2
  • 收藏
  • 分享
  • 文章举报
python小屌丝 发布了4 篇原创文章 · 获赞 6 · 访问量 536 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: