Django 项目总结-地址管理

本文阅读时长大约为 4 分钟

地址管理

实现用户地址的管理,主要业务逻辑:

省市区地址的数据库的建立与查询

用户地址的增删改查处理

设置默认地址

设置地址标题

在用户录入地址时,需要进行省市区的选择。在页面加载时,向后端请求省份数据,当用户选择确定省份后,向后端请求该省份的城市数据;在用户选择确定城市数据后,向后端请求该城市的区县信息。这个过程称为省市区三级联动。

省市区地址的三级联动:

创建省市区的数据表,采用自关联的方式;

数据表设计:

自关联字段的外键指向自身, ForeignKey(‘self’)

使用 related_name 指明查询一个行政区划的所有下级行政区划时,使用哪种语法查询;

迁移数据库,导入数据:

请求有两种方式:,,请求省份数据,根据上级 id 请求数据;

让视图继承自,这个视图集继承自会自动执行 list(多条数据)和 retrieve(单个数据)的查询;

重写和方法,进行判断,对应两种请求方式来写对应的 查询结果集 和 序列化器;

list 的查询结果集和序列化器没什么难度,

retrieve 的查询结果集在底层会自动以 id 为过滤条件来进行重新查询,

retrieve 的序列化器需要查询出子级信息 subs,进行返回;

城市信息和区划信息是同一个接口

使用缓存

省市区的数据是经常被用户查询使用的,而且数据基本不变化,所以我们可以将省市区数据进行缓存处理,减少数据库的查询次数。

在Django REST framework中使用缓存,可以通过drf-extensions扩展来实现。

因为省市区视图使用了视图集,并且视图集中有提供ListModelMixin和RetrieveModelMixin的扩展(由ReadOnlyModelViewSet提供),所以可以直接添加CacheResponseMixin扩展类,就相当于在 list 和 retrieve 方法添加了装饰器 @cache_response,就可以使用缓存了

在配置文件中设置将缓存数据保存在 redis 中,设置有效期

当数据库进行查询时,会将缓存保存在 redis 中,下一次请求时会优先访问缓存

用户地址管理:

创建用户地址模型类,

添加视图:用户地址列表数据,保存用户地址数据,处理删除(逻辑删除),设置默认地址,修改标题

添加对应序列化器

END

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181204G1MR8X00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券