Django项目之电商购物商城 -- 新增收货地址

Django项目之电商购物商城 – 新增收货地址

  1. 在项目中新增收货地址我们需要根据前端的设置来写

    在这里插入图片描述

在这里我们看到新增收货地址的方法发送的是一个ajax请求 , 使用的是post方法 , 其路由为addresses/create

分析完毕后开始写视图以及路由

一. 设置视图以及路由

因为新增地址依旧是用户的权限 , 所以我们在users该应用下创建

1. 视图
# 保存收货地址
class SaveAddressView(View):def post(self , request):json_str = request.body.decode()json_dict = json.loads(json_str)receiver = json_dict.get('receiver')province_id = json_dict.get('province_id')city_id = json_dict.get('city_id')district_id = json_dict.get('district_id')place = json_dict.get('place')mobile = json_dict.get('mobile')tel = json_dict.get('tel')email = json_dict.get('email')if not all([receiver,province_id,city_id,district_id,place,mobile]):return HttpResponseForbidden("缺少必要数据")if not re.match(r'^1[3-9]\d{9}$' , mobile):return HttpResponseForbidden("号码不正确")if tel:if not re.match(r'^(0[0-9]{2,3}-)?([2-9][0-9]{6,7})+(-[0-9]{1,4})?$', tel):return HttpResponseForbidden('固定电话输入有误')if email:if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email):return HttpResponseForbidden('邮箱输入有误')# 将数据保存到数据库中address = Address.objects.create(user=request.user,receiver=receiver,province_id=province_id,city_id=city_id,district_id=district_id,place=place,mobile=mobile,tel=tel,email=email,)address_dict = {'id': address.id,'receiver': address.receiver,'province': address.province.area_name,'city': address.city.area_name,'district': address.district.area_name,'place': address.place,'mobile': address.mobile,'tel': address.tel,'email': address.email,}return JsonResponse({'code': RETCODE.OK, 'errmsg': '新增地址成功', 'address': address_dict})

在这里从前端获取数据以及对数据的校验都比较简单我就不重复赘述了 , 唯一要注意的是所写的字段以及命名要和前端设置的一致

2.路由
# 新增收货地址path('addresses/create/' , views.SaveAddressView.as_view())

二. 修改前端将数据传入浏览器

在这里通过vue框架传入之前写入的列表数据

<script type="text/javascript">let addresses = {{ addresses|safe }};let default_address_id = {{ default_address_id|default:0 }};</script>

通过循环获取数据

<div class="site_top_con"><a @click="show_add_site">新增收货地址</a><span>你已创建了<b>{{ count }}</b>个收货地址,最多可创建<b>20</b>个</span></div><div class="site_con" v-for="(address , index) in addresses" key="address.id"><div class="site_title"><h3>[[ address.receiver ]] [[address.province]]</h3><a @click="show_edit_title(index)" class="edit_icon"></a><em v-if="address.id===default_address_id">默认地址</em><span class="del_site">×</span></div><ul class="site_list"><li><span>收货人:</span><b>[[address.receiver]]</b></li><li><span>所在地区:</span><b>[[address.province]] [[address.city]] [[address.district]]</b></li><li><span>地址:</span><b>[[address.place]]</b></li><li><span>手机:</span><b>[[address.mobile]]</b></li><li><span>固定电话:</span><b>[[address.tel]]</b></li><li><span>电子邮箱:</span><b>[[address.email]]</b></li></ul>

新增收货地址的操作就到这里了 , 后面还需要设置默认收货地址 , 以及修改地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/9474.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue数据大屏并发请求

并发? 处理并发 因为js是单线程的&#xff0c;所以前端的并发指的是在极短时间内发送多个数据请求&#xff0c;比如说循环中发送 ajax , 轮询定时器中发送 ajax 请求. 然后还没有使用队列, 同时发送 的. 1. Promise.all 可以采用Promise.all处理并发&#xff0c; 当所有pro…

JavaScript字符串对象的常用方法

JavaScript字符串对象是指通过String构造函数创建的字符串实例。下面是一些常用的字符串方法的详细解析与案例说明&#xff1a; charAt(index)&#xff1a;返回指定索引位置的字符。 var str "Hello World"; console.log(str.charAt(0)); // "H"concat(…

传输层协议——UDP协议

目录 一、传输层 二、再谈端口号 端口号的划分 知名端口号 pidof netstat命令 三、UDP协议 1、UDP协议格式 2、UDP协议特点 3、UDP协议的缓冲区 四、基于UDP的应用层协议 一、传输层 上一篇文章我们所讲到的HTTP协议和HTTPS协议&#xff0c;是属于应用层协议。我们…

vue3.x + echarts 5.x + ant-design-vue 4.x + monaco-editor v3 新增版本切换功能

前言 1. 因为vue架构中&#xff0c;大多数包都是通过npm / yarn 等工具直接安转到node_modules 使用 2. 多个版本切换时&#xff0c;不可能全部安装echarts版本 3. 所以思路围绕如何通过cdn动态引入echarts一、添加工具代码 loadScript 路径 utils/loadScript.js export de…

PYTHON做题复盘

1、关于递归的代码 #会返回None的错误代码while len(string)<1:return Trueelse:if string[0]!string[-1]:return Falseelse:string string[1:-1]#正确while len(string) > 1:if string[0] ! string[-1]:return Falseelse:string string[1:-1]return True 错误原因&am…

【NodeMCU实时天气时钟温湿度项目 2】WIFI模式设置及连接

第一专题内容&#xff0c;请参考 【NodeMCU实时天气时钟温湿度项目 1】连接点亮SPI-TFT屏幕和UI布局设计-CSDN博客 第三专题内容&#xff0c;请参考 【NodeMCU实时天气时钟温湿度项目 3】连接SHT30传感器&#xff0c;获取并显示当前环境温湿度数据&#…

MySQL数据库变量使用

#MySQL变量的定义和使用 #一、标识符命名规范 #1.以字母或下划线开头&#xff0c;不能以数字开头 #2.不允许使用关键字和保留字 #3.只允许使用_和&#xffe5;作为标识符&#xff0c;不允许使用其他符号 #变量的定义方法 #set在update中使用过set&#xff0c;update声明修改表&…

致鸿物流器材有限公司揭示2024数字物流供应链与技术装备展新动态

参展企业介绍 广东致鸿物流器材有限公司&#xff0c;前身为广州致鸿物流器材有限公司&#xff0c;成立于2002年初&#xff0c;是一家在中国仓储笼行业成立多年的专业仓储笼制造公司&#xff0c;公司员工约400名&#xff0c;日产仓储笼制造规模近8000个&#xff0c;在全国范围内…

华为OD机试 - 手机App防沉迷系统(Java 2024 C卷 100分)

华为OD机试 2024C卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测试…

自动驾驶学习2-毫米波雷达

1、简介 1.1 频段 毫米波波长短、频段宽,比较容易实现窄波束,雷达分辨率高,不易受干扰。波长介于1~10mm的电磁波,频率大致范围是30GHz~300GHz 毫米波雷达是测量被测物体相对距离、相对速度、方位的高精度传感器。 车载毫米波雷达主要有24GHz、60GHz、77GHz、79GHz四个频段。 …

积鼎CFDPro颗粒流仿真 | 基于拉格朗日粒子追踪方法,模拟复杂颗粒的流动现象

颗粒流仿真是通过数值模拟手段模拟由大量固体颗粒构成的系统的动态行为&#xff0c;能够详尽刻画颗粒间的碰撞、扩散、堆积、破碎、混合等微观交互&#xff0c;以及与流体介质的相互作用&#xff0c;从而预测颗粒流在各种工况下的宏观表现。颗粒流仿真能够揭示隐藏的风险因素&a…

Java内存模型详解

一、JMM规范 可见性&#xff1a;volatile变量&#xff1b;锁原子性&#xff1a;synchronized和Lock等锁机制有序性&#xff1a;happens-before原则 Java内存模型&#xff08;Java Memory Model&#xff0c;JMM&#xff09;是Java虚拟机&#xff08;JVM&#xff09;的一个关键部…

前端开发如何切换node版本安装依赖

在前端开发当中经常遇到node版本不对应导致的安装依赖报错&#xff0c;可以通过切换node版本来实现 在macOS上切换Node.js版本&#xff0c;通常可以使用nvm&#xff08;Node Version Manager&#xff09;或n这样的包来管理。以下是使用nvm的步骤&#xff1a; 安装nvm&#xf…

4. SVG基本图形绘制教程

1. 矩形 <rect> 矩形是SVG中最基本的图形之一。通过<rect>元素可以绘制矩形和正方形。 参数: x 和 y&#xff1a;定义矩形左上角的坐标。width 和 height&#xff1a;定义矩形的宽度和高度。rx 和 ry&#xff1a;定义矩形边角的圆滑程度。 代码示例: <svg …

Java 变量类型

Java 变量类型 在 Java 语言中&#xff0c;所有的变量在使用前必须声明。 声明变量的基本格式如下&#xff1a; type identifier [ value][, identifier [ value] …] ; 格式说明&#xff1a; type – 数据类型。 identifier – 是变量名&#xff0c;可以使用逗号 , 隔开来…

C++ STL 概念1(未完成)

STL&#xff0c;全称Standard Template Library&#xff08;标准模板库&#xff09;&#xff0c;是C标准库的重要组成部分。 说到C的STL&#xff0c;让人就不免想到六大组件&#xff1a; 容器 迭代器 算法 仿函数 空间配置器 适配器 从容器开始逐个描述。 容器 容器分为关联…

Bert 在 OCNLI 训练微调

目录 0 资料1 预训练权重2 wandb3 Bert-OCNLI3.1 目录结构3.2 导入的库3.3 数据集自然语言推断数据集路径读取数据集数据集样例展示数据集类别统计数据集类加载数据 3.4 Bert3.4 训练 4 训练微调结果3k10k50k 0 资料 【数据集微调】 阿里天池比赛 微调BERT的数据集&#xff0…

想学PR的有福了,一小时学会PR剪视频

想学PR的有福了&#xff0c;一小时学会PR剪视频 Pr是什么软件&#xff1f;教程介绍及教程展示教程领取结语下期更新预报 Pr是什么软件&#xff1f; Pr是指Adobe Premiere Pro&#xff0c;它是由Adobe公司开发的一款专业级的视频编辑软件。这款软件广泛应用于电影、电视和网页视…

SQL统计语句记录

1.达梦数据库 统计指定单位的12个月份的业务数据 SELECT a.DEPT_ID, b.dept_name, a.USER_NAME, count(a.dept_id) as count, sum(case when to_char(a.CREATE_TIME,yyyy-mm) 2023-01 THEN 1 else 0 end) as one,sum(case when to_char(a.CREATE_TIME,yyyy-mm) 2023-02 T…

【JavaEE 初阶(四)】多线程进阶

❣博主主页: 33的博客❣ ▶️文章专栏分类:JavaEE◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你了解更多线程知识 目录 1.前言2.常见的锁策略2.1悲观锁vs乐观锁2.2轻量级锁vs重量级锁2.3自旋锁vs挂起锁2.4读写…