完整电商项目--(五)用户基本信息(3):地址的三级联动--缓存处理

uView Plus省市区三级联动实战:手把手教你处理接口数据与动态更新 本文详细介绍了如何使用uView Plus的Picker组件实现省市区三级联动功能,包括处理不同格式的接口数据、动态更新机制以及性能优化技巧。通过实战案例,帮助开发者快速掌握数据转换和动态加载技术,提升用户体验和开发效率。 阅读详情

认识缓存

在这里插入图片描述

django的缓存框架

  • 这个文档很详细的介绍了关于缓存的东西。

  • (1)我们之前讲过的设置缓存
    在这里插入图片描述
    我们使用的是设置 redis缓存后端。使用django-redis扩展包工具。这些缓存各有优点

  • (2)缓存有很多种
    在这里插入图片描述
    这些可以帮助我们完成 基于站点,视图, 模板片段等的缓存。调用方法讲的都很清晰。

  • 在阅读过这些之后,我们选择使用 底层的缓存API,因为我们所要缓存的只是一些简单的数据。
    下面来看下底层接口的用法:
    在这里插入图片描述

  • 增删改查的功能十分详细,并且支持缓存所有的Python数据类型(如果你不能说出增删改查的功能函数,请再仔细阅读一遍!)

下面我们就可以进行缓存设计(这个缓存的设计思路还是我们开头的第一张图中的伪代码的思路!)

# Create your views here.
class AreaView(View):
    def get(self, request):
        area_id = request.GET.get('area_id')
        if area_id is None:
            # 先获取缓存,如果缓存中不存在,再查询 mysql并缓存
            # 拿缓存
            result = cache.get('province_list')
            if result is None:
                # 没有传递地区编号, 表示查询所有的省列表
                province_list = Area.objects.filter(parent__isnull=True)  # 表示父级为空: (sql)where parent is null, 作为外键,是parent ,但是 mysql中默认存储的字段名字是 parent_id 这里我们还是使用 parent
                # 进行处理,只返回地区对象的编号和名称
                province_list2 = []
                for province in province_list:
                    province_list2.append({
                        'id': province.id,
                        'name': province.name
                    })
                result = {
                    'code': RETCODE.OK,
                    'errmsg': "ok",
                    'province_list':province_list2
                }
                cache.set('province_list',result, constants.AREA_CACHE_EXPIRES)

            return http.JsonResponse(result)
        else:
            result = cache.get('area_'+area_id)
            if result is None:
                # 有地区编号,表示查询指定地区的子级地区列表
                try :
                    area = Area.objects.get(pk=area_id)
                except:
                    return http.JsonResponse({'code':RETCODE.PARAMERR, 'errmsg':"地区编号无效"})
                # 获取指定地区的子级地区
                sub_list=area.subs.all()
                # 整理前端需要的数据格式
                sub_list2 = []
                for sub in sub_list:
                    sub_list2.append({
                        'id':sub.id,
                        'name':sub.name
                    })
                result={
                    'code':RETCODE.OK,
                    'errmsg':"ok",
                    'sub_data':{
                        'id':area.id,
                        'name':area.name,
                        'subs':sub_list2
                    }
                }
                cache.set('area_' + str(area.id), result, constants.AREA_CACHE_EXPIRES)

            return http.JsonResponse(result)

代码很长,实际上非常简单~ 就是if else 语句, 然后通过 area_id 参数判断是 查询省,还是 市,区的信息。 接着判断缓存。添加缓存,再判断缓存,很易懂的逻辑。

over!

uniapp实战:高效解析与动态加载省市区三级联动JSON数据 本文详细介绍了在uniapp项目中实现高效省市区三级联动选择器的实战方案。针对传统方案加载慢、卡顿的问题,核心采用JSON数据动态加载与缓存策略,按需解析数据以优化性能。文章剖析了数据结构,提供了完整的组件实现代码,并分享了性能优化与边界情况处理技巧,助力开发者构建流畅的用户体验。 阅读详情

相关推荐

uview-plus Picker组件实战:省市区三级联动数据动态加载与交互优化

本文详细介绍了如何使用uview-plus的Picker组件实现省市区三级联动功能。通过实战案例,重点讲解了数据的动态加载策略、多列间的精准联动逻辑,并分享了数据缓存、交互反馈等优化技巧,帮助开发者构建流畅高效的移动端地址选择组件。

weixin_29306317的博客 468

EasyUI页面缓存三级地址联动例程

前台页面地址三级联动处理方式有很多,可以使用异步加载处理(参考https://blog.youkuaiyun.com/qixiang_chen/article/details/85214034),也可以将数据一次加载到客户端,在客户端实现三级联动处理。本例使用Easyui技术在前台实现缓存三级联动。系统架构如下图: Maven父工程 POM.xml <?xml version="1.0" encodi...

qixiang_chen的博客 705

纯JavaScript实现三级联动组件:从数据驱动到性能优化

联动选择是前端开发中处理层级化数据交互的常见模式,其核心原理在于数据、视图与事件的协同。通过结构化的JSON数据定义层级关系,利用事件监听驱动视图的动态更新,实现了从用户选择到界面反馈的闭环。这种模式在表单交互中具有重要技术价值,能显著提升用户体验,广泛应用于地区选择、商品分类、日期时间等场景。本文以省市区三级联动为例,深入探讨了如何不依赖第三方库,使用原生JavaScript构建一个健壮、可复用的组件。文中重点介绍了通过Map建立数据索引以优化查找性能,以及处理异步数据加载等工程实践,帮助开发者掌握数据驱

weixin_30471561的博客 288

实现收货地址本地持久化存储:前端开发实战教程

打开user.js模块,在mutations// user.js// 使用uni.setStorageSync方法将地址数据存储到本地// 存储的键为address,值为state中的address经过JSON.stringify转换后的字符串通过以上步骤,我们实现了收货地址的本地持久化存储。在user.js模块中定义这个mutations方法,用于本地持久化存储。每次调用方法时,通过触发m_user模块里的方法。每次初始化时,读取本地存储的地址数据并转换为对象,重新赋值给address。

m0_57836225的博客 632

全国三级联动地区选择JavaScript实现

本文还有配套的精品资源,点击获取 简介:本压缩包文件包含名为"address.js"的JavaScript文件,用于实现中国地区的三级联动选择功能。这个功能涉及省、市、县(区)三个层级的联动下拉菜单,常见于需要地址输入的网站或应用中。通过JavaScript技术实现动态数据加载和用户交互,涉及事件监听、数据结构设计、动态渲染、异步加载、错误处理、用户体验优化和代码兼容性等多...

weixin_35094083的博客 1670

头歌工程实训答案-机器学习篇之手写体识别篇

第2关:激活函数'''x:负无穷到正无穷的实数'''if x<=0:return 0else:return x#***第3关:反向传播算法import os。

m0_71537260的博客 2518

Web前端开发经典案例之vue框架开发电商项目百草味案例(二)

此课程为vue开发百草味项目的第二课,请先学习完第一课再学习第二课 把登录成功的用户信息记录到缓存中通过缓存来判断用户是否登录过用户登录成功之后把选中的商品加入到购物车中vuex进行数据处理在vuex仓库中对加入的商品的几种情况分别进行处理在vuex仓库中对商品数据处理完之后再更新到缓存中更新加入购物车数据的方法以及把购物车数量渲染在徽章中项目刚运行的时候在初始化函数中判断用户的登录状态项目刚运行的时候在初始化函数中从缓存中更新购物车的数据到仓库通过计算属性来开发计算总价格的功能在购物车组件中控制每一个商品的复选框在购物车组件中全选复选框和每一个商品复选框关联下载并且安装三级联动v-distpicker插件加入编辑地址功能处理视图层和数据层

2.ROS实用工具:坐标变换

本文围绕ROS坐标变换展开,介绍其在机器人系统中的关键作用,即统一不同传感器和执行器坐标系,服务数据融合等操作。基于ROS的tf库,从广播和监听TF变换两方面阐述实现过程,涵盖新建工作包、编写广播和监听代码、配置构建文件及编译等步骤。此外,介绍启动节点管理器后运行广播和监听节点的方法,并通过rqt_graph、rqt_tf_tree、tf_echo等工具可视化和获取坐标系变换信息。借助这些内容,读者不仅能掌握ROS坐标变换的实现,还能对机器人坐标变换系统的调试和理解有更深入认识 。

qq_74168740的博客 1171

使用Redis缓存实现三(n)级联动【一看就懂】

为什么要使用Redis呢? 我们通常使用Redis存放一些经常被 (查看)/ 使用 的数据,借其缓存机制来减少我们访问数据库的次数从而达到提高项目性能的目的、并给予用户更好的体验。 实现方式: 在项目启动时就将所有联动数据存入Redis中。再使用时就无需频繁访问数据库、只需从缓存中取出对应数据即可。 效果如图: 控制层(Controller)主要代码如下: @RequestMapping("getCity") @ResponseBody ...

杨大仙 1513

PotPlayer终极画质调校:深入MadVR渲染器设置,让你的显示器发挥100%潜力

本文深入探讨了如何通过MadVR渲染器优化PotPlayer的画质设置,充分发挥高端显卡和显示器的潜力。从色彩空间匹配、色深优化到HDR元数据处理,提供了一套完整的配置指南,帮助用户实现影院级视觉体验。特别适合拥有NVIDIA RTX或AMD RX系列显卡的用户进行精细调校。

weixin_42530458的博客 599

uni-app蓝牙MTU设置失效探因:从20字节限制到跨设备兼容性实战

本文深入探讨了uni-app蓝牙开发中MTU设置失效的常见问题,特别是20字节限制的成因及解决方案。通过分析设备兼容性、蓝牙协议栈特性和系统版本差异,提供了智能延迟策略、设备特征检测和渐进式MTU提升等实战方案,帮助开发者优化蓝牙数据传输效率。

weixin_29289821的博客 287

使用redis缓存技术实现省市区三级联动

使用redis缓存技术实现省市区三级联动 使用redis缓存技术实现省市区三级联动使用redis缓存技术实现省市区三级联动数据库准备html代码druid配置文件jedis配置文件JDBC utils 工具类redisPool utils 工具类domain 类代码web层代码service层代码接口实现类dao层代码接口实现类 数据库准备 CREATE TABLE `pcd` ( `id` ...

weixin_46176526的博客 5393

信创环境下,软件测试如何破局?

毕竟,在自主可控的道路上,每一行通过测试的代码,都在为信创产业的未来添砖加瓦。未来,测试工程师不仅要验证软件在信创环境的可用性,更要基于国产软硬件的特性,推动软件进行 “原生设计”—— 例如,针对国产 CPU 的多核架构优化代码,基于国产数据库的索引机制提升查询效率。某政务云平台的测试数据显示,在 “飞腾芯片 + 麒麟操作系统” 环境下,系统的并发处理能力较传统环境下降约 15%,测试团队通过优化软件的线程调度逻辑,最终将性能损失控制在 5% 以内 —— 这正是信创性能测试的价值所在。

weixin_45608163的博客 883

python学习之美多商城(十):用户模块--用户中心收货地址、省市区三级联动、使用缓存保存省市区、用户地址管理

收货地址: 在这个页面中,我们要实现用户地址的管理,主要的业务逻辑有: 省市区地址的数据库建立与查询 用户地址的增删改查处理 设置默认地址 设置地址标题 一、省市区三级联动: 1.三级联动: 在用户录入地址是,需要进行省市区的选择。在页面加载时,向后端请求省份数据,当用户选择确定省份后,向后端请求该省份下的城市数据;在用户选择确定城市数据后,向后端请求该城市的区县信息。我们把这个过程称为省...

浅弋、璃鱼的博客 3764

Matlab Arduino 硬件支持包安装 MATLAB_Support_Package_for_Arduino_Hardware

Matlab Arduino硬件支持包离线安装

weixin_43283734的博客 2840

破解现代反爬虫:JS加密、OB混淆与CSS反爬的实战攻防分析

摘要: 随着反爬技术的升级,JS加密、OB混淆和CSS反爬成为主流防护手段,阻碍传统爬虫获取数据。本文解析了这些技术的工作原理,并提出破解策略:通过模拟浏览器(如Selenium、Puppeteer)执行动态JS,逆向混淆代码,以及利用开发者工具突破CSS隐藏。针对复杂防护,开发者需结合技术分析与工具应用,如API接口抓取、动态渲染破解等,以应对不断演进的反爬机制。未来,爬虫攻防将持续升级,需保持技术敏锐性。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1643

SpringBoot+AJAX动态三级联动全国地址联动

在某宝和某东确定订单的时候,收货地址填写会实时更新。多的不说上代码。 效果图: 1.表结构和思路解析 表数据就是一个三级的数据展示,pid就是每个分层的标识 比如:我要查询一级的包含了中国的省级 也就是在我改变每个阶层的时候去加载当前阶层的pid就ok select * from gf_cityaddress where pid=0; 2.代码逻辑 1.前端代码: <%@ page...

panlupeng的博客 4540

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

电商App省市区选择器:Android Spinner三级联动实战

Spinner组件的高级用法JSON数据在Android中的处理三级联动UI的实现套路性能优化的常见手段下次如果要做类似功能,不妨先考虑用Spinner实现,再根据需要升级为更复杂的地址选择组件。

YellowSun24的博客 938

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

City Picker实战教程:如何快速集成到电商网站地址选择模块

想要为你的电商网站打造一个高效、美观的地址选择功能吗?City Picker作为一款下拉面板式省市区三级联动jQuery插件,正是解决这一需求的终极方案!这款插件不仅视觉清爽,交互体验友好,还能显著提升用户填写地址的效率。本文将为你详细讲解如何在电商网站中快速集成City Picker地址选择器,让你的用户体验更上一层楼。🎯 ## 为什么选择City Picker作为电商地址选择器? 在电商

gitblog_01009的博客 963

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Element China Area Data:中国行政区划数据省市区三级联动完整教程

Element China Area Data是一个专门为Vue.js和Element UI提供最新中国行政区域数据的开源项目,支持省市区三级联动下拉选择。该项目基于官方数据源,为Web应用提供准确、高效的地理信息处理能力。 ## 🚀 电商地址填写效率提升300%的真实案例 想象一下,用户在你的电商平台填写收货地址时,传统的文本输入需要手动输入省市区信息,不仅耗时耗力,还容易出错。使用Ele

gitblog_01110的博客 393

终极指南:5分钟快速集成微信小程序省市区三级联动选择器

想要为你的微信小程序添加专业的省市区地址选择功能吗?今天我要为你介绍一个功能强大、使用简单的开源组件——wx_selectArea微信小程序省市区联动选择器。这个组件让开发者能够轻松实现省、市、区三级联动选择,为用户提供流畅的地址选择体验,同时大大简化开发流程。 ## 🎯 为什么选择这个地址选择器组件? 在电商、物流、用户注册等场景中,地址选择是必不可少的功能。传统的手动输入方式不仅用户体验

gitblog_00855的博客 402

Vue项目必备:用el-cascader+axios实现省市区三级联动(含懒加载与数据持久化)

本文详细介绍了在Vue项目中使用el-cascader和axios实现省市区三级联动的方法,包括动态加载、数据持久化和智能回显等高级功能。通过懒加载优化性能,结合axios处理API请求,提升用户体验,适用于电商、企业系统等需要地区选择的场景。

l3m4n的博客 724

告别表单卡顿:selectize.js三级联动下拉实战指南

selectize.js是一个轻量级的JavaScript库,专为实现高性能下拉列表和选择框功能而设计。它能帮助开发者轻松构建流畅的三级联动下拉菜单,彻底解决传统表单的卡顿问题,提升用户体验。无论是电商网站的地址选择,还是数据筛选系统,selectize.js都能提供高效、美观的解决方案。 ## 为什么选择selectize.js实现联动下拉? 传统的三级联动下拉实现往往存在加载缓慢、交互卡顿

gitblog_00249的博客 638

攻克电商APP地址管理痛点:SmartRefreshLayout实现丝滑刷新体验

你是否遇到过这样的用户投诉?"地址列表下拉没反应""刚添加的地址刷新不出来""加载半天还在转圈圈"。在电商APP中,地址管理模块看似简单,却直接影响用户下单转化——据统计,**37%的用户会因地址操作不畅放弃购买**。传统刷新方案要么过度设计导致性能损耗,要么功能单一无法应对复杂场景,而SmartRefreshLayout作为Android生态最成熟的下拉刷新框架,正为这类问题提供优雅解决方案。 ...

gitblog_00656的博客 1121

uniapp multiSelector 动态数据加载实现省市区三级联动选择器

本文详细介绍了在uniapp中利用multiSelector组件实现省市区三级联动选择器的完整方案。重点阐述了如何通过动态数据加载优化性能,避免一次性加载所有数据造成的卡顿,并分享了数据结构设计、组件封装及用户体验打磨等核心实践,帮助开发者构建高效流畅的地址选择功能。

weixin_29011395的博客 237
上一篇: 完整电商项目--(五)用户基本信息(2):收货地址
下一篇: python随笔--关于实例对象访问类属性的一些东西
我是py呀
博客等级 码龄8年 205粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值