31.Django大型电商项目之加入购物车——Django的增加、删除、修改、查询实操

news2024/11/17 8:38:51

1. 加入购物车

views

# netshop\cartapp\views.py
from django.shortcuts import render, redirect
from django.http import HttpResponse, HttpResponseBadRequest
from utils.cartmanager import *
# Create your views here.
# 购物车视图
def cartView(request):
    # 获取表单数据
    # 1.获取购物车操作
    flag = request.POST.get('flag')
    if flag == 'add':
        # 加入购物车
        dbCartManageObj = getCartManger(request)
        dbCartManageObj.add(**request.POST.dict())
    return redirect('/cartapp/queryAll/')

# 查询购物车列表
def queryAll(request):
    dbCartManageObj = getCartManger(request)
    cartitemList = dbCartManageObj.queryAll()
    return render(request,'cartapp/cart.html',{'cartitemList':cartitemList})

templates

{% extends 'base.html' %}
{% block title %}购物车列表页面{% endblock %}


{% block main %}
<section class="cartMain">
    <div class="cartMain_hd">
        <ul class="order_lists cartTop">
            <li class="list_chk">
                <!--所有商品全选-->
                <input type="checkbox" id="all" class="whole_check" style="display: inline-block;position:relative;left: -8px;top: 4px">

                全选
            </li>
            <li class="list_con">商品信息</li>
            <li class="list_info">商品参数</li>
            <li class="list_price">单价</li>
            <li class="list_amount">数量</li>
            <li class="list_sum">金额</li>
            <li class="list_op">操作</li>
        </ul>
    </div>

    <div class="cartBox">
        <div class="order_content">

        
                 <ul style="position: relative" class="order_lists" goodsid="5" sizeid="17" colorid="17">
                    <li class="list_chk">
                        <input type="checkbox" id="checkbox_2" class="son_check" style="display: inline-block;position:absolute;left: 21px;top: 54px">

                    </li>
                    <li class="list_con">
                        <div class="list_img"><a href="javascript:;"><img src="./首页_files/bai_mt1VrH5.jpg" alt=""></a></div>
                        <div class="list_text"><a href="javascript:;">秋装时尚印花复古时尚休闲两件套装裙子</a></div>
                    </li>
                    <li class="list_info">
                        <p>颜色:白色</p>
                        <p>尺寸:S</p>
                    </li>
                    <li class="list_price">
                        <p class="price">¥35.00</p>
                    </li>
                    <li class="list_amount">
                        <div class="amount_box">
                            <a href="javascript:;" class="reduce reSty" goodsid="5" colorid="17" sizeid="17">-</a>
                            <input type="text" value="5" class="sum" readonly="">
                            <a href="javascript:;" class="plus" goodsid="5" colorid="17" sizeid="17">+</a>
                        </div>
                    </li>
                    <li class="list_sum">
                        <p class="sum_price">¥175.0</p>
                    </li>
                    <li class="list_op">
                        <p class="del"><a href="javascript:;" class="delBtn" goodsid="5" colorid="17" sizeid="17">移除商品</a></p>
                    </li>
                </ul>

        
                 <ul style="position: relative" class="order_lists" goodsid="4" sizeid="14" colorid="14">
                    <li class="list_chk">
                        <input type="checkbox" id="checkbox_2" class="son_check" style="display: inline-block;position:absolute;left: 21px;top: 54px">

                    </li>
                    <li class="list_con">
                        <div class="list_img"><a href="javascript:;"><img src="./首页_files/lv_cTMJg2K.jpg" alt=""></a></div>
                        <div class="list_text"><a href="javascript:;">梦娜世家2017女式新款修身中长款毛领时尚显瘦欧美气质羽绒服A88</a></div>
                    </li>
                    <li class="list_info">
                        <p>颜色:绿色</p>
                        <p>尺寸:160</p>
                    </li>
                    <li class="list_price">
                        <p class="price">¥99.00</p>
                    </li>
                    <li class="list_amount">
                        <div class="amount_box">
                            <a href="javascript:;" class="reduce reSty" goodsid="4" colorid="14" sizeid="14">-</a>
                            <input type="text" value="6" class="sum" readonly="">
                            <a href="javascript:;" class="plus" goodsid="4" colorid="14" sizeid="14">+</a>
                        </div>
                    </li>
                    <li class="list_sum">
                        <p class="sum_price">¥594.0</p>
                    </li>
                    <li class="list_op">
                        <p class="del"><a href="javascript:;" class="delBtn" goodsid="4" colorid="14" sizeid="14">移除商品</a></p>
                    </li>
                </ul>

        


        </div>
    </div>
    <!--底部-->
    <div class="bar-wrapper">
        <div class="bar-right">
            <div class="piece">已选商品<strong class="piece_num" id="all_count">0</strong></div>
            <div class="totalMoney">共计: <strong class="total_text" id="all_price">0.00</strong></div>
            <div class="calBtn"><a href="javascript:;" id="jiesuan">结算</a></div>
        </div>
    </div>
</section>


<section class="model_bg" style="display: none;"></section>
<section class="my_model" style="display: none;">
    <p class="title">删除宝贝<span class="closeModel">X</span></p>
    <p>您确认要删除该宝贝吗?</p>
    <div class="opBtn"><a href="javascript:;" class="dialog-sure">确定</a><a href="javascript:;" class="dialog-close">关闭</a>
    </div>
</section>
<input type="hidden" name="csrfmiddlewaretoken" value="JyaqZY2G1WlHajMF9aSD7GTIUKqBai918GdZmW8skri98iVfK7FipbnrGijHCf0A">

{% endblock %}


{% block footerjs %}
<script>
    $('.plus').click(function(event){
        // <!--将数据同步到服务器-->
        var csrfmiddlewaretoken = $('input[name="csrfmiddlewaretoken"]').val()
        var goodsid = $(this).attr('goodsid')
        var colorid = $(this).attr('colorid')
        var sizeid = $(this).attr('sizeid')


        var data={
            goodsid:goodsid,
            colorid:colorid,
            sizeid:sizeid,
            csrfmiddlewaretoken:csrfmiddlewaretoken,
            type:'plus'
        }
        $.ajax({
            async:false,
            url:'/cart/',
            data:data,
            type:'post',
            success:function(data) {

            },
            error:function(){
                // <!--按钮设置了两个点击事件-->

                event.stopImmediatePropagation()
            }

        })
    })
      $('.reduce').click(function(event){
        // <!--将数据同步到服务器-->
        if ($(this).next('input').val()<=1){
            event.stopImmediatePropagation()
            return;
        }
        var csrfmiddlewaretoken = $('input[name="csrfmiddlewaretoken"]').val()
        var goodsid = $(this).attr('goodsid')
        var colorid = $(this).attr('colorid')
        var sizeid = $(this).attr('sizeid')

        var data={
            goodsid:goodsid,
            colorid:colorid,
            sizeid:sizeid,
            csrfmiddlewaretoken:csrfmiddlewaretoken,
            type:'minus'
        }

        $.ajax({
            async:false,
            url:'/cart/',
            type:'post',
            data:data,
            success:function(data) {

            },
            error:function(){
                // <!--按钮设置了两个点击事件-->

                event.stopImmediatePropagation()
            }

        })
    })
    $('.delBtn').click(function(){
        var goodsid= $(this).attr('goodsid');
        var colorid= $(this).attr('colorid');
        var sizeid= $(this).attr('sizeid');
        $('.dialog-sure').attr('goodsid',goodsid).attr('colorid',colorid).attr('sizeid',sizeid)
    })


    $('.dialog-sure').click(function(event){
        var goodsid= $(this).attr('goodsid');
        var colorid= $(this).attr('colorid');
        var sizeid= $(this).attr('sizeid');
        var csrfmiddlewaretoken = $('input[name="csrfmiddlewaretoken"]').val();

        var data={
            goodsid:goodsid,
            colorid:colorid,
            sizeid:sizeid,
            csrfmiddlewaretoken:csrfmiddlewaretoken,
            type:'delete'
        }

        $.ajax({
            type:'post',
            url:'/cart/',
            data:data,
            async:false,
            success:function(result) {

            },
            error:function(event){
                //停止事件传播
                event.stopImmediatePropagation()
            }

        })
    })

    //在购物车页面点击登录按钮后回转到购物车页面
    $('.sign > a').click(function(event){

        var link = $(this).attr('href')
        $(this).attr('href',link+"?redirct=cart")
    })

    //单击结算按钮
    $('#jiesuan').click(function(){


        cks = $('.son_check')
        var cartitem = []
        $.each(cks,function(index,ck){
            if($(ck).prop('checked')){
                var goodsid = $(ck).parents('.order_lists').attr('goodsid')
                var sizeid = $(ck).parents('.order_lists').attr('sizeid')
                var colorid = $(ck).parents('.order_lists').attr('colorid')



                cartitem.push(JSON.stringify({'goodsid':goodsid,'sizeid':sizeid,'colorid':colorid}))


            }
        })


        if(cartitem.length==0){
            return;
        }



        var url = '/order/?cartitems='+cartitem;
        $(this).attr('href',url);


    })

</script>

{% endblock %}

models

from django.db import models
from userapp.models import UserInfo
from goodsapp.models import *
# Create your models here.
# 购物车模型类
class CartItem(models.Model):
    goodsid = models.PositiveBigIntegerField(verbose_name='商品id')
    colorid = models.PositiveBigIntegerField(verbose_name='颜色id')
    sizeid = models.PositiveBigIntegerField(verbose_name='尺寸id')
    count = models.PositiveBigIntegerField(default=0,verbose_name='商品数量')
    isdelete = models.BooleanField(default=False,verbose_name='是否删除')
    user = models.ForeignKey(UserInfo, on_delete=models.CASCADE,verbose_name='用户')

    def getColor(self):
        return Color.objects.get(id=self.colorid)
    
    def getGoods(self):
        return Goods.objects.get(id=self.goodsid)

    def getSize(self):
        return Size.objects.get(id=self.sizeid)

    def getTotalPrice(self):
        return self.getGoods().price*self.count

2. 购物车列表——获取数据

在这里插入图片描述

上一步中,我们是完成了购物车模型(数据表)的建立,点击添加到购物车,加入到数据库中。并且完成了静态页面,这里,要把数据改成动态的。
templates——修改商品列表

<div class="cartBox">
        <div class="order_content">
            {% for cartitem in cartitemList %}
        
                 <ul style="position: relative" class="order_lists" goodsid="{{cartitem.goodsid}}" sizeid="{{cartitem.sizeid}}" colorid="{{cartitem.colorid}}">
                    <li class="list_chk">
                        <input type="checkbox" id="checkbox_2" class="son_check" style="display: inline-block;position:absolute;left: 21px;top: 54px">

                    </li>
                    <li class="list_con">
                        <div class="list_img"><a href="javascript:;"><img src="{{cartitem.getColor.colorurl}}" alt=""></a></div>
                        <div class="list_text"><a href="javascript:;">{{cartitem.getGoods.gname}}</a></div>
                    </li>
                    <li class="list_info">
                        <p>颜色:{{cartitem.getGoods.price}}</p>
                        <p>尺寸:{{cartitem.getSize.sname}}</p>
                    </li>
                    <li class="list_price">
                        <p class="price">¥{{cartitem.getGoods.price}}</p>
                    </li>
                    <li class="list_amount">
                        <div class="amount_box">
                            <a href="javascript:;" class="reduce reSty" goodsid="{{cartitem.goodsid}}" sizeid="{{cartitem.sizeid}}" colorid="{{cartitem.colorid}}">-</a>
                            <input type="text" value="{{cartitem.count}}" class="sum" readonly="">
                            <a href="javascript:;" class="plus" goodsid="{{cartitem.goodsid}}" sizeid="{{cartitem.sizeid}}" colorid="{{cartitem.colorid}}">+</a>
                        </div>
                    </li>
                    <li class="list_sum">
                        <p class="sum_price">¥{{cartitem.getTotalPrice}}</p>
                    </li>
                    <li class="list_op">
                        <p class="del"><a href="javascript:;" class="delBtn" goodsid="{{cartitem.goodsid}}" sizeid="{{cartitem.sizeid}}" colorid="{{cartitem.colorid}}">移除商品</a></p>
                    </li>
                </ul>
            {% endfor %}
        </div>
    </div>

在这里插入图片描述

3. 修改购物车商品数量

我们已经完成了数据的获取。
当我们选择商品的数量时,并没有对数据库的内容进行修改,这里,我们就得修改商品数量时候,修改数据库中的数据
templates
在前端中,我们将按钮进行绑定事件,调用视图中写的获取数据方法。

    $('.plus').click(function(event){
        // <!--将数据同步到服务器-->
        var csrfmiddlewaretoken = $('input[name="csrfmiddlewaretoken"]').val()
        var goodsid = $(this).attr('goodsid')
        var colorid = $(this).attr('colorid')
        var sizeid = $(this).attr('sizeid')


        var data={
            goodsid:goodsid,
            colorid:colorid,
            sizeid:sizeid,
            csrfmiddlewaretoken:csrfmiddlewaretoken,
            flag:'plus'
        }
        $.ajax({
            async:false,
            url:'/cartapp/cartView/',
            data:data,
            type:'post',
            success:function(data) {

            },
            error:function(){
                // <!--按钮设置了两个点击事件-->

                event.stopImmediatePropagation()
            }

        })
    })
      $('.reduce').click(function(event){
        // <!--将数据同步到服务器-->
        if ($(this).next('input').val()<=1){
            event.stopImmediatePropagation()
            return;
        }
        var csrfmiddlewaretoken = $('input[name="csrfmiddlewaretoken"]').val()
        var goodsid = $(this).attr('goodsid')
        var colorid = $(this).attr('colorid')
        var sizeid = $(this).attr('sizeid')

        var data={
            goodsid:goodsid,
            colorid:colorid,
            sizeid:sizeid,
            csrfmiddlewaretoken:csrfmiddlewaretoken,
            flag:'minus'
        }

        $.ajax({
            async:false,
            url:'/cartapp/cartView/',
            type:'post',
            data:data,
            success:function(data) {

            },
            error:function(){
                // <!--按钮设置了两个点击事件-->

                event.stopImmediatePropagation()
            }

        })
    })
    

views

# netshop\cartapp\views.py
from django.shortcuts import render, redirect
from django.http import HttpResponse, HttpResponseBadRequest
from utils.cartmanager import *
# Create your views here.
# 购物车视图
def cartView(request):
    # 获取表单数据
    # 1.获取购物车操作
    flag = request.POST.get('flag')
    dbCartManageObj = getCartManger(request)
    if flag == 'add':
        # 加入购物车
        dbCartManageObj.add(**request.POST.dict())
    elif flag == 'plus':
        # 增加商品数量
        dbCartManageObj.update(step=1, **request.POST.dict())
    elif flag == 'minus':
        # 增加商品数量
        dbCartManageObj.update(step=-1, **request.POST.dict())
    return redirect('/cartapp/queryAll/')

在这里插入图片描述

4. 删除购物车信息——移除商品(不是真正的移除)

当我们点击移除商品时,会弹出一个确认框,点击确认时,发送请求修改商品是否被移除的字段和数量字段。
templates

    $('.delBtn').click(function(){
        var goodsid= $(this).attr('goodsid');
        var colorid= $(this).attr('colorid');
        var sizeid= $(this).attr('sizeid');
        $('.dialog-sure').attr('goodsid',goodsid).attr('colorid',colorid).attr('sizeid',sizeid)
    })


    $('.dialog-sure').click(function(event){
        var goodsid= $(this).attr('goodsid');
        var colorid= $(this).attr('colorid');
        var sizeid= $(this).attr('sizeid');
        var csrfmiddlewaretoken = $('input[name="csrfmiddlewaretoken"]').val();

        var data={
            goodsid:goodsid,
            colorid:colorid,
            sizeid:sizeid,
            csrfmiddlewaretoken:csrfmiddlewaretoken,
            flag:'delete'
        }

        $.ajax({
            type:'post',
            url:'/cartapp/cartView/',
            data:data,
            async:false,
            success:function(result) {

            },
            error:function(event){
                //停止事件传播
                event.stopImmediatePropagation()
            }

        })
    })

views

# netshop\cartapp\views.py
from django.shortcuts import render, redirect
from django.http import HttpResponse, HttpResponseBadRequest
from utils.cartmanager import *
# Create your views here.
# 购物车视图
def cartView(request):
    # 获取表单数据
    # 1.获取购物车操作
    flag = request.POST.get('flag')
    dbCartManageObj = getCartManger(request)
    if flag == 'add':
        # 加入购物车
        dbCartManageObj.add(**request.POST.dict())
    elif flag == 'delete':
        # 删除商品
        dbCartManageObj.update(**request.POST.dict())
    return redirect('/cartapp/queryAll/')

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

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

相关文章

高通Ride软件开发包使用指南(13)

高通Ride软件开发包使用指南&#xff08;13&#xff09;9.3使用HLOS验证PCIe交换机9.3.1先决条件发行说明9.3.2 PCIE设备枚举9.3.3验证SA9000推断9.3.4芯片对芯片9.3.5 NVME操作9.3.6 10Gb以太网9.3使用HLOS验证PCIe交换机 本节提供有关如何通过HLOS验证PCIe交换机用例的信息Q…

Set接口-HashSet和LinkedHashSet

1.Set 接口 1.1基本介绍 1)无序(添加和取出的顺序不一致)&#xff0c;没有索引; 2)不允许重复元素,所以最多包含一个null; 3)JDK API中Set接口的实现类有: 1.2Set 接口的常用方法 和 List 接口一样, Set 接口也是 Collection 的子接口&#xff0c;因此&#xff0c;常用方法和Co…

Pytorch100例 | 用深度学习处理分类问题【实战教程】

PyTorch和TensorFlow库是用于深度学习的两个最常用的 Python 库。PyTorch 是 Facebook 开发的&#xff0c;而 TensorFlow 是 Google 的项目。在本文中&#xff0c;你将看到如何使用 PyTorch 库来解决分类问题。 分类问题属于机器学习问题的范畴&#xff0c;其中给定一组特征&am…

【檀越剑指大厂—SpringBoot】SpringBoot应用

一.配置 1.配置文件 SpringBoot 使用一个全局的配置文件&#xff0c;配置文件名称固定 application.propertiesapplication.yml 配置文件的作用&#xff1a;修改 SpringBoot 自动配置的默认值;SpringBoot 在底层都给我们自动配置好 2.tomcat 配置 server:port: 8081error…

IDEA下使用Git与GitHub【超详细】

IDEA结合Git 初始化Git及提交 查看提交版本 切换版本 创建分支与切换 合并分支 ​编辑 分支冲突 IDEA结合GitHub 创建GitHub账号 上传代码到本地仓库 推送代码 拉取代码 克隆远程库到本地 这里是在学习完Git的基础指令来了解在企业合作开发下如何用集成工具联合Git…

Photoshop - 高反差保留

对图像处理相关学习的一些笔记归档发表&#xff0c;关于锐化的原理&#xff1b; 首先简而言之&#xff0c;当颜色明度为100%的时候&#xff0c;为白色&#xff0c;反之为黑色&#xff1a; 为50%时&#xff0c;就是中性灰&#xff1b; 在混合方式中&#xff0c;变暗这一组&…

JVM之虚拟机栈

1. 虚拟机栈概述 虚拟机栈不存在GC,但存在OOM,程序计数器二者都不存在 2. 栈的存储单位 3. 局部变量表 变量的分类&#xff1a;按照数据类型分&#xff1a;① 基本数据类型 ② 引用数据类型 按照在类中声明的位置分&#xff1a;① 成员变量&#xff1a;在使用前&#xff0c;都经…

【实时数仓】DWM层订单宽表之维表关联异步查询(续)、DWM层支付宽表需求分析、需求实现(源码)

文章目录一 DWM层-订单宽表1 维表关联代码实现&#xff08;1&#xff09;优化2&#xff1a;异步查询a 关联省市维度b 关联SKU维度c 关联SPU维度d 关联品类维度e 关联品牌维度f 最终结果展示&#xff08;2&#xff09;结果写入kafka sink二 DWM层-支付宽表1 需求分析与思路2 需求…

界面控件DevExpress WinForm v22.1——拥有全新的WXI调色板

DevExpress WinForm拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForm能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜任…

车载以太网解决方案,你知多少?

近年来&#xff0c;为了满足智能网联汽车的开发要求&#xff0c;车载以太网技术开始逐渐进入人们的视野。而以太网技术已经成为下一代车载络架构的趋势之一&#xff0c;其发展之迅猛&#xff0c;使得各主机厂纷纷产生了浓厚的兴趣并投入研发。 一 为什么使用车载以太网 | 对高…

UE4 GIS Cesium for Unreal插件使用

第一步&#xff1a;安装Cesium for Unreal插件 如果尚未安装&#xff0c;请先安装Cesium for Unreal插件。 在虚幻引擎市场上打开Cesium for Unreal插件页面。2. 登录虚幻引擎商城&#xff0c;并单击免费按钮&#xff0c;将插件安装在虚幻引擎中。 第二步&#xff1a;创建项…

这里有 10 个省时间的 PyCharm 技巧

0. PyCharm 常用快捷键 1. 查看使用库源码 经常听人说&#xff0c;多看源码。源码不仅能帮我们搞清楚运行机制&#xff0c;还能学习优秀的库或者框架的最佳实践。 调用库时&#xff0c;你可以在你好奇的几乎任何地方点击 CommandB&#xff0c;就可以很方便的跳转到源码里的类&…

电商项目6:商品模块-品牌管理

商品模块-品牌管理1、逆向工程生成菜单2、优化逆向生成的前端工程2.1、优化显示状态1、逆向工程生成菜单 将逆向工程生成的两个vue文件放置到前端项目&#xff0c;可以参考电商项目2逆向工程生成 将其两个vue文件复制到product目录下 然后重启前端项目 只有查询&#xff0c;…

【算法】子序列问题合集

前言 动态规划的核心设计思想是数学归纳法 假如我们想证明一个数学结论&#xff1a; 那么先假设这个结论在 k < n 时成立想办法推导证明出 k n 的时候此结论也成立。是需要一个 dp 数组嘛&#xff1f; 可以假设 dp[0...i - 1] 都已经被算出来了然后问自己&#xff1a;怎么…

记录Android Studio连接华为(nova)手机鸿蒙系统踩过的坑

目录 安装Android studio 安装Google USE Driver 查看华为手机的安卓版本 设置开发者模式 安装华为手机助手 重启Android studio 总结 安装Android studio 我主要参考的是这篇文章&#xff1a;Android基础&#xff08;android studio最详细基础使用功略&#xff09;_手下…

14考虑电动汽车可调度潜力的充电站两阶段市场投标策略

参考文献 考虑电动汽车可调度潜力的充电站两阶段市场投标策略——詹祥澎&#xff08;电力系统自动化,2021&#xff09; 主要内容 在电力市场环境下,充电站优化投标策略能降低电力成本&#xff0c;甚至通过售电获取收益。本程序考虑了电动汽车成为柔性储荷资源的潜力&#xf…

【目标检测】只需一张图~YOLOv5原理懂了~

目录 一、简介 二、模型结构 1.整体结构图 2.Backbone&#xff08;CSPDarknet&#xff09; 3.SPPF&#xff08;Spatial Pyramid Pooling - Fast&#xff09; 4.Neck&#xff08;FPNPAN&#xff09; 5.Head 三、anchor编解码 1.anchor编码 2.anchor解码 四、损失函数 …

一文读懂Go函数调用

导读&#xff5c;Go的函数调用时参数是通过栈传递还是寄存器传递&#xff1f;使用哪个版本的Go语言能让程序运行性能提升5%&#xff1f;腾讯后台开发工程师涂明光将带你由浅入深了解函数调用&#xff0c;并结合不同版本Go进行实操解答。函数调用基本概念1&#xff09;调用者cal…

【服务器数据恢复】Linux服务器重装系统后出现空白超级块的数据恢复案例

服务器数据恢复环境&#xff1a; 某品牌X系列服务器&#xff1b; linux操作系统&#xff1b; 4块SAS接口硬盘组建raid5磁盘阵列。 服务器故障&检测&#xff1a; 服务器运行过程中由于未知原因突然瘫痪&#xff0c;用户为故障服务器重新安装操作系统&#xff0c;安装完成后发…

【车载开发系列】UDS诊断---基于事件响应($0x86)

【车载开发系列】UDS诊断—基于事件响应&#xff08;$0x86&#xff09; 诊断---基于事件响应&#xff08;$0x86&#xff09;【车载开发系列】UDS诊断---基于事件响应&#xff08;$0x86&#xff09;一.概念定义二.注意事项三.报文格式1&#xff09;请求报文2&#xff09;肯定响应…