25.Django大型电商项目之地址管理——如何使用三级联动菜单数据加载地址、保存数据、动态获取数据、设置默认值

news2024/9/23 2:33:18

1. 地址管理基本页面

1.1 概述

在这里插入图片描述
在这里插入图片描述

1.2 流程

修改templates的跳转链接center.html

<ul>
    <li><a href="/userapp/address/">地址管理</a></li>
</ul>

templates

{% extends 'base.html' %}
{% block title %}用户中心{% endblock %}
{% load static %}

{% block headerjs %}
    <script src="{% static 'css/assets/js/jquery.min.js' %}" type="text/javascript"></script>
    <script src="{% static 'css/AmazeUI-2.4.2/assets/js/amazeui.js' %}"></script>
{% endblock %}

{% block headercss %}
    <link href="{% static 'css/assets/css/admin.css' %}" rel="stylesheet" type="text/css">
    <link href="{% static 'css/assets/css/amazeui.css' %}" rel="stylesheet" type="text/css">
    <link href="{% static 'css/assets/css/personal.css' %}" rel="stylesheet" type="text/css">
    <link href="{% static 'css/assets/css/addstyle.css' %}" rel="stylesheet" type="text/css">
{% endblock %}

{% block main %}
{% csrf_token %}
<div class="Bott">
    <div class="wrapper clearfix" style="margin: 0 auto">
        <div class="zuo fl" style="margin-left: 100px">
            <h3>
                <a href="http://127.0.0.1:8000/"><img src="{% static 'images/tx.png' %}"></a>
                <p class="clearfix"><span class="fl">[{{userInfo.uname}}]</span><span class="fr logout">[退出登录]</span>
                </p>
            </h3>
            <div>
                <ul>
                    <li><a href="http://127.0.0.1:8000/user/usercenter/#">我的订单</a></li>
                </ul>
                <ul>
                    <li><a href="/userapp/address/">地址管理</a></li>
                </ul>
                <ul>
                    <li><a href="http://127.0.0.1:8000/">回到首页</a></li>
                </ul>

            </div>
        </div>
        <div class="you fl main-wrap">
            <div class="user-address">
                <!--标题 -->
                <div class="am-cf am-padding">
                    <div class="am-fl am-cf"><strong class="am-text-danger am-text-lg">地址管理</strong> /
                        <small>Address&nbsp;list</small></div>
                </div>
                <hr>
                <ul class="am-avg-sm-1 am-avg-md-3 am-thumbnails">

                    <li class="user-addresslist defaultAddr">
                        <span class="new-option-r"><i class="am-icon-check-circle"></i>默认地址</span>
                        <p class="new-tit new-p-re">
                            <span class="new-txt">小叮当</span>
                            <span class="new-txt-rd2">159****1622</span>
                        </p>
                        <div class="new-mu_l2a new-p-re">
                            <p class="new-mu_l2cw">
                                <span class="title">地址:</span>
                                <span class="province">湖北</span><span class="city">武汉</span><span class="dist">洪山</span><span class="street">雄楚大道666号(中南财经政法大学)</span>
                            </p>
                        </div>
                        <div class="new-addr-btn">
                            <a href="#"><i class="am-icon-edit"></i>编辑</a>
                            <span class="new-addr-bar">|</span>
                            <a href="javascript:void(0);" onclick="delClick(this);"><i class="am-icon-trash"></i>删除</a>
                        </div>
                    </li>

                    <li class="user-addresslist">
                        <span class="new-option-r"><i class="am-icon-check-circle"></i>设为默认</span>
                        <p class="new-tit new-p-re">
                            <span class="new-txt">小叮当</span>
                            <span class="new-txt-rd2">159****1622</span>
                        </p>
                        <div class="new-mu_l2a new-p-re">
                            <p class="new-mu_l2cw">
                                <span class="title">地址:</span>
                                <span class="province">湖北</span><span class="city">武汉</span><span class="dist">洪山</span><span class="street">雄楚大道666号(中南财经政法大学)</span>
                            </p>
                        </div>
                        <div class="new-addr-btn">
                            <a href="#"><i class="am-icon-edit"></i>编辑</a>
                            <span class="new-addr-bar">|</span>
                            <a href="javascript:void(0);" onclick="delClick(this);"><i class="am-icon-trash"></i>删除</a>
                        </div>
                    </li>
                    <li class="user-addresslist">
                        <span class="new-option-r"><i class="am-icon-check-circle"></i>设为默认</span>
                        <p class="new-tit new-p-re">
                            <span class="new-txt">小叮当</span>
                            <span class="new-txt-rd2">159****1622</span>
                        </p>
                        <div class="new-mu_l2a new-p-re">
                            <p class="new-mu_l2cw">
                                <span class="title">地址:</span>
                                <span class="province">湖北</span><span class="city">武汉</span><span class="dist">洪山</span><span class="street">雄楚大道666号(中南财经政法大学)</span>
                            </p>
                        </div>
                        <div class="new-addr-btn">
                            <a href="#"><i class="am-icon-edit"></i>编辑</a>
                            <span class="new-addr-bar">|</span>
                            <a href="javascript:void(0);" onclick="delClick(this);"><i class="am-icon-trash"></i>删除</a>
                        </div>
                    </li>
                </ul>
                <div class="clear"></div>
                <a class="new-abtn-type" data-am-modal="{target: '#doc-modal-1', closeViaDimmer: 0}">添加新地址</a>
                <!--例子-->
                <div class="" id="doc-modal-1">

                    <div class="add-dress">

                        <!--标题 -->
                        <div class="am-cf am-padding">
                            <div class="am-fl am-cf"><strong class="am-text-danger am-text-lg">新增地址</strong> /
                                <small>Add&nbsp;address</small></div>
                        </div>
                        <hr>

                        <div class="am-u-md-12 am-u-lg-8" style="margin-top: 20px;">
                            <form class="am-form am-form-horizontal">

                                <div class="am-form-group">
                                    <label for="user-name" class="am-form-label">收货人</label>
                                    <div class="am-form-content">
                                        <input type="text" id="user-name" placeholder="收货人">
                                    </div>
                                </div>

                                <div class="am-form-group">
                                    <label for="user-phone" class="am-form-label">手机号码</label>
                                    <div class="am-form-content">
                                        <input id="user-phone" placeholder="手机号必填" type="email">
                                    </div>
                                </div>
                                <div class="am-form-group">
                                    <label for="user-address" class="am-form-label">所在地</label>
                                    <div class="am-form-content address">
                                        <select data-am-selected="" style="display: none;">
                                            <option value="a">浙江省</option>
                                            <option value="b" selected="">湖北省</option>
                                        </select>
                                        <div class="am-selected am-dropdown " id="am-selected-j6xr4"
                                            data-am-dropdown=""> <button type="button"
                                                class="am-selected-btn am-btn am-dropdown-toggle am-btn-default"> <span
                                                    class="am-selected-status am-fl">湖北省</span> <i
                                                    class="am-selected-icon am-icon-caret-down"></i> </button>
                                            <div class="am-selected-content am-dropdown-content">
                                                <h2 class="am-selected-header"><span
                                                        class="am-icon-chevron-left">返回</span></h2>
                                                <ul class="am-selected-list">
                                                    <li class="" data-index="0" data-group="0" data-value="a"> <span
                                                            class="am-selected-text">浙江省</span> <i
                                                            class="am-icon-check"></i></li>
                                                    <li class="am-checked" data-index="1" data-group="0" data-value="b">
                                                        <span class="am-selected-text">湖北省</span> <i
                                                            class="am-icon-check"></i></li>
                                                </ul>
                                                <div class="am-selected-hint"></div>
                                            </div>
                                        </div>
                                        <select data-am-selected="" style="display: none;">
                                            <option value="a">温州市</option>
                                            <option value="b" selected="">武汉市</option>
                                        </select>
                                        <div class="am-selected am-dropdown " id="am-selected-qmuwx"
                                            data-am-dropdown=""> <button type="button"
                                                class="am-selected-btn am-btn am-dropdown-toggle am-btn-default"> <span
                                                    class="am-selected-status am-fl">武汉市</span> <i
                                                    class="am-selected-icon am-icon-caret-down"></i> </button>
                                            <div class="am-selected-content am-dropdown-content">
                                                <h2 class="am-selected-header"><span
                                                        class="am-icon-chevron-left">返回</span></h2>
                                                <ul class="am-selected-list">
                                                    <li class="" data-index="0" data-group="0" data-value="a"> <span
                                                            class="am-selected-text">温州市</span> <i
                                                            class="am-icon-check"></i></li>
                                                    <li class="am-checked" data-index="1" data-group="0" data-value="b">
                                                        <span class="am-selected-text">武汉市</span> <i
                                                            class="am-icon-check"></i></li>
                                                </ul>
                                                <div class="am-selected-hint"></div>
                                            </div>
                                        </div>
                                        <select data-am-selected="" style="display: none;">
                                            <option value="a">瑞安区</option>
                                            <option value="b" selected="">洪山区</option>
                                        </select>
                                        <div class="am-selected am-dropdown " id="am-selected-pqsxb"
                                            data-am-dropdown=""> <button type="button"
                                                class="am-selected-btn am-btn am-dropdown-toggle am-btn-default"> <span
                                                    class="am-selected-status am-fl">洪山区</span> <i
                                                    class="am-selected-icon am-icon-caret-down"></i> </button>
                                            <div class="am-selected-content am-dropdown-content">
                                                <h2 class="am-selected-header"><span
                                                        class="am-icon-chevron-left">返回</span></h2>
                                                <ul class="am-selected-list">
                                                    <li class="" data-index="0" data-group="0" data-value="a"> <span
                                                            class="am-selected-text">瑞安区</span> <i
                                                            class="am-icon-check"></i></li>
                                                    <li class="am-checked" data-index="1" data-group="0" data-value="b">
                                                        <span class="am-selected-text">洪山区</span> <i
                                                            class="am-icon-check"></i></li>
                                                </ul>
                                                <div class="am-selected-hint"></div>
                                            </div>
                                        </div>
                                    </div>
                                </div>

                                <div class="am-form-group">
                                    <label for="user-intro" class="am-form-label">详细地址</label>
                                    <div class="am-form-content">
                                        <textarea class="" rows="3" id="user-intro" placeholder="输入详细地址"></textarea>
                                        <small>100字以内写出你的详细地址...</small>
                                    </div>
                                </div>

                                <div class="am-form-group">
                                    <div class="am-u-sm-9 am-u-sm-push-3">
                                        <a class="am-btn am-btn-danger">保存</a>
                                        <a href="javascript: void(0)" class="am-close am-btn am-btn-danger"
                                            data-am-modal-close="">取消</a>
                                    </div>
                                </div>
                            </form>
                        </div>

                    </div>

                </div>

            </div>

            <script type="text/javascript">
                $(document).ready(function () {
                    $(".new-option-r").click(function () {
                        $(this).parent('.user-addresslist').addClass("defaultAddr").siblings().removeClass("defaultAddr");
                    });

                    var $ww = $(window).width();
                    if ($ww > 640) {
                        $("#doc-modal-1").removeClass("am-modal am-modal-no-btn")
                    }

                })
            </script>

            <div class="clear"></div>

        </div>

    </div>
</div>

{% endblock %}

{% block footerjs %}
<script>
    $('.logout').click(function () {

        $.ajax({
            type: 'post',
            url: '/userapp/loginout/',
            data: 'csrfmiddlewaretoken=' + $('input[name="csrfmiddlewaretoken"]').val(),
            success: function (data) {
                window.location = '/userapp/login/'
            }
        })
    })
</script>
{% endblock %}

views.py

# 地址管理
class AddressView(View):
    def get(self,request):
        return render(request,'userapp/address.html')

2. 加载三级联动菜单数据(省市县的联动选择)

2.1 概述

后端:
在后端中,编写接口,根据id获取名称返回一个列表即可。
前端:
先删除原本代码中的展示数据,添加onChange函数修改为动态
给每一个函数添加调用下一个选择框,依次向下调用,前端发送请求给后端,获取到数据,使用循环遍历添加到标签

2.2 代码实现

views

# netshop\userapp\views.py
from django.shortcuts import render,HttpResponse,redirect
from django.http import JsonResponse
from django.views import View
from userapp.models import *
import jsonpickle
from utils.code import gene_text
from django.core import serializers
# 级联加载地址
def loadArea(request):
    pid = request.GET.get('pid',-1)
    # 根据pid查询数据
    areaList = Area.objects.filter(parentid=pid)
    # 返回响应(异步发送需要JsonResponse,Json格式,需要把列表序列化)
    return JsonResponse({'areaList':serializers.serialize('json',areaList)})

templates

<div class="am-form-group">
     <label for="user-address" class="am-form-label">所在地</label>
           <div class="am-form-content address">
                 <!-- 级联操作:当option1发生改变就调用option2获取数据 -->
                 <select id="province" onchange="loadCity()"></select>
                 <select id="city" onchange="loadTown()"></select>
                 <select id="town"></select>
           </div>
</div>
// 加载页面后加载地址级联:先把第一个选择框给加载了
    $(function(){
        loadProvince()
    })
    // 加载省
    function loadProvince() {
        loadArea(0,'province',loadCity)
    }

    // 加载市区
    function loadCity() {
        loadArea($('#province').val(),'city',loadTown)
    }

    // 加载县
    function loadTown() {
        loadArea($('#city').val(),'town')
    }

    function loadArea(pid, selectedId,nextLoad) {
        // 清空当前select框种的option
        $('#'+selectedId).empty()
        // 发送异步请求加载数据
        $.get('/userapp/loadArea/', {'pid':pid}, function(result){
            areaList = result.areaList
            areaList = JSON.parse(areaList)
            for(var i=0; i<areaList.length; i++){
                area = areaList[i]
                // 给每个选择框的标签中新增标签option
                $('#'+selectedId).append('<option value="'+area.pk+'">'+area.fields.areaname+'</option>')
            }
        })
        // 加载市
        if(nextLoad!=null){
            nextLoad();
        }
    }

3.保存地址

views.py

# 地址管理
class AddressView(View):
    def get(self,request):
        return render(request,'userapp/address.html')
    def post(self,request):
        # 获取表单数据
        aname = request.POST.get('aname','')
        aphone = request.POST.get('aphone','')
        addr = request.POST.get('addr','')
        # 从session中获取登录用户
        userinfo = request.session.get('user','')
        if userinfo:
            user = jsonpickle.loads(userinfo)
        # 设置是否是默认地址
        # 根据当前登录的用户获取地址,查看是否是第一个地址
        count = user.address_set.count() # 若没有地址的情况下,就设置为默认地址
        if count == 0:
            isdefault = True
        else:
            isdefault = False
        # 插入数据库
        Address.objects.create(aname=aname, aphone=aphone, addr=addr, userinfo=user, isdefault=isdefault)
        return redirect('/userapp/address/')

templates

<div class="am-u-md-12 am-u-lg-8" style="margin-top: 20px;">
                            <form id="frmid" class="am-form am-form-horizontal" action="/userapp/address/" method="post">
                                {% csrf_token %}
                                <div class="am-form-group">
                                    <label for="user-name" class="am-form-label">收货人</label>
                                    <div class="am-form-content">
                                        <input type="text" id="user-name" name='anme' placeholder="收货人">
                                    </div>
                                </div>

                                <div class="am-form-group">
                                    <label for="user-phone" class="am-form-label">手机号码</label>
                                    <div class="am-form-content">
                                        <input id="user-phone" placeholder="手机号必填" type="text" name="aphone">
                                    </div>
                                </div>
                                <div class="am-form-group">
                                    <label for="user-address" class="am-form-label">所在地</label>
                                    <div class="am-form-content address">
                                        <!-- 级联操作:当option1发生改变就调用option2获取数据 -->
                                        <select id="province" onchange="loadCity()"></select>
                                        <select id="city" onchange="loadTown()"></select>
                                        <select id="town"></select>
                                    </div>
                                </div>

                                <div class="am-form-group">
                                    <label for="user-intro" class="am-form-label">详细地址</label>
                                    <div class="am-form-content">
                                        <!-- 失去焦点时,获取数据 -->
                                        <textarea class="" rows="3" id="addr" onfocus="getAddressInfo()" name="addr" placeholder="输入详细地址"></textarea>
                                        <small>100字以内写出你的详细地址...</small>
                                    </div>
                                </div>

                                <div class="am-form-group">
                                    <div class="am-u-sm-9 am-u-sm-push-3">
                                        <a class="am-btn am-btn-danger" onclick="$('#frmid').submit();">保存</a>
                                        <a href="javascript: void(0)" class="am-close am-btn am-btn-danger"
                                            data-am-modal-close="">取消</a>
                                    </div>
                                </div>
                            </form>
                        </div>
function getAddressInfo(){
        // 获取选择的省市县
        var province = $('#province>option:selected').text()
        var city = $('#city>option:selected').text()
        var town = $('#town>option:selected').text()
        // 添加省市县到详细地址中,方便用户输入
        $('#addr').val(province+" "+city+" "+town)


    }

4.动态获取收货地址与设置默认地址

4.1 概述

动态获取收获地址
在原先的静态属性上,只保留一个属性。在后端中,我们先根据session获取到用户的基本信息。然后去数据库查询相关的收获地址返回一个对象给前端。前端进行循环遍历对象,得到单个对象后,再把原先的属性值改为动态的即可。
设置默认地址
在每个收获地址上,都有一个defaultAddr class属性,所以,我们要先判断是否为True。然后,我们根据数据模型,发现数据模型中存在一个默认值。在后端中,我们先获取到用户,获取其所有的地址,循环遍历,根据前端返回的数据,若是点击的就把默认值改为True,其余改成False。

4.2 代码展示

templates

<div class="user-address">
                <!--标题 -->
                <div class="am-cf am-padding">
                    <div class="am-fl am-cf"><strong class="am-text-danger am-text-lg">地址管理</strong> /
                        <small>Address&nbsp;list</small></div>
                </div>
                <hr>
                <ul class="am-avg-sm-1 am-avg-md-3 am-thumbnails">
                    {% for addr in addr_list %}
                        <li class="user-addresslist {% if addr.isdefault == True %} defaultAddr {% endif %}" onclick="updateDefaultAddr('{{addr.id}}')">
                            <span class="new-option-r"><i class="am-icon-check-circle"></i>默认地址</span>
                            <p class="new-tit new-p-re">
                                <span class="new-txt">{{addr.aname}}</span>
                                <span class="new-txt-rd2">{{addr.aphone}}</span>
                            </p>
                            <div class="new-mu_l2a new-p-re">
                                <p class="new-mu_l2cw">
                                    <span class="title">地址:</span>
                                    <span class="street">{{addr.addr}}</span>
                                </p>
                            </div>
                            <div class="new-addr-btn">
                                <a href="#"><i class="am-icon-edit"></i>编辑</a>
                                <span class="new-addr-bar">|</span>
                                <a href="javascript:void(0);" onclick="delClick(this);"><i class="am-icon-trash"></i>删除</a>
                            </div>
                        </li>
                    {% endfor %}

                </ul>

                <div class="clear"></div>
                <a class="new-abtn-type" data-am-modal="{target: '#doc-modal-1', closeViaDimmer: 0}">添加新地址</a>
                <!--例子-->
                <div class="" id="doc-modal-1">

                    <div class="add-dress">

                        <!--标题 -->
                        <div class="am-cf am-padding">
                            <div class="am-fl am-cf"><strong class="am-text-danger am-text-lg">新增地址</strong> /
                                <small>Add&nbsp;address</small></div>
                        </div>
                        <hr>

                        <div class="am-u-md-12 am-u-lg-8" style="margin-top: 20px;">
                            <form id="frmid" class="am-form am-form-horizontal" action="/userapp/address/" method="post">
                                {% csrf_token %}
                                <div class="am-form-group">
                                    <label for="user-name" class="am-form-label">收货人</label>
                                    <div class="am-form-content">
                                        <input type="text" id="user-name" name='anme' placeholder="收货人">
                                    </div>
                                </div>

                                <div class="am-form-group">
                                    <label for="user-phone" class="am-form-label">手机号码</label>
                                    <div class="am-form-content">
                                        <input id="user-phone" placeholder="手机号必填" type="text" name="aphone">
                                    </div>
                                </div>
                                <div class="am-form-group">
                                    <label for="user-address" class="am-form-label">所在地</label>
                                    <div class="am-form-content address">
                                        <!-- 级联操作:当option1发生改变就调用option2获取数据 -->
                                        <select id="province" onchange="loadCity()"></select>
                                        <select id="city" onchange="loadTown()"></select>
                                        <select id="town"></select>
                                    </div>
                                </div>

                                <div class="am-form-group">
                                    <label for="user-intro" class="am-form-label">详细地址</label>
                                    <div class="am-form-content">
                                        <!-- 失去焦点时,获取数据 -->
                                        <textarea class="" rows="3" id="addr" onfocus="getAddressInfo()" name="addr" placeholder="输入详细地址"></textarea>
                                        <small>100字以内写出你的详细地址...</small>
                                    </div>
                                </div>

                                <div class="am-form-group">
                                    <div class="am-u-sm-9 am-u-sm-push-3">
                                        <a class="am-btn am-btn-danger" onclick="$('#frmid').submit();">保存</a>
                                        <a href="javascript: void(0)" class="am-close am-btn am-btn-danger"
                                            data-am-modal-close="">取消</a>
                                    </div>
                                </div>
                            </form>
                        </div>

                    </div>

                </div>

            </div>
<script>
    function updateDefaultAddr(addrId){
        // 修改默认地址
        window.location.href = '/userapp/updateDefault/?addrId='+addrId
    }
</script>

views

# netshop\userapp\views.py
from django.shortcuts import render,HttpResponse,redirect
from django.http import JsonResponse
from django.views import View
from userapp.models import *
import jsonpickle
from utils.code import gene_text
from django.core import serializers
# 地址管理
class AddressView(View):
    def get(self,request):
        # 获取当前登录用户
        userinfo = request.session.get('user','')
        if userinfo:
            user = jsonpickle.loads(userinfo)
        # 获取当前登录用户关联的收获地址
        addr_list = user.address_set.all()
        return render(request,'userapp/address.html',{'addr_list':addr_list})
    def post(self,request):
        # 获取表单数据
        aname = request.POST.get('aname','')
        aphone = request.POST.get('aphone','')
        addr = request.POST.get('addr','')
        # 从session中获取登录用户
        userinfo = request.session.get('user','')
        if userinfo:
            user = jsonpickle.loads(userinfo)
        # 设置是否是默认地址
        # 根据当前登录的用户获取地址,查看是否是第一个地址
        count = user.address_set.count() # 若没有地址的情况下,就设置为默认地址
        if count == 0:
            isdefault = True
        else:
            isdefault = False
        # 插入数据库
        Address.objects.create(aname=aname, aphone=aphone, addr=addr, userinfo=user, isdefault=isdefault)
        return redirect('/userapp/address/')


# 级联加载地址
def loadArea(request):
    pid = request.GET.get('pid',-1)
    # 根据pid查询数据
    areaList = Area.objects.filter(parentid=pid)
    # 返回响应(异步发送需要JsonResponse,Json格式,需要把列表序列化)
    return JsonResponse({'areaList':serializers.serialize('json',areaList)})

def updateDefaultAddrView(request):
    # 获取请求参数addrId
    addrId = int(request.GET.get('addrId',-1))

    # 修改当前登录用户的默认地址
    # 从session中获取登录用户
    userinfo = request.session.get('user','')
    if userinfo:
        user = jsonpickle.loads(userinfo)
        # 获取当前登录用户的所有地址
        addressList = user.address_set.all()
        # 循环遍历地址列表
        for address in addressList:
            # 设置默认地址
            if address.id == addrId:
                address.isdefault = True
            else:
                address.isdefault = False
            address.save()
    return redirect('/userapp/address/')

在这里插入图片描述

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

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

相关文章

东北大学数据结构第八周(排序)

7-1 快速排序 作者 朱允刚 单位 吉林大学 给定包含n个元素的整型数组a[1],a[2],…,a[n]&#xff0c;利用快速排序算法对其进行递增排序&#xff0c;请输出排序过程&#xff0c;即每次Partition之后的数组。每次选择所处理的子数组的第一个元素作为基准元素。 输入格式: 输入为…

MapReduce 序列化案例

文章目录MapReduce 序列化案例一、案例需求二、案例分析map 阶段Reduce 阶段三、代码实现1、编写流量统计的Bean对象2、Mapper阶段代码MapReduce 序列化案例 一、案例需求 1、需求&#xff1a; 统计每一个手机号耗费的总上行流量&#xff0c;下行流量&#xff0c;总流量 2、输…

二、ZFNet可视化卷积神经网络——可解释性机器学习(DataWhale组队学习)

目录引言ZFNet的网络结构可视化反卷积反池化反激活反卷积训练细节特征可视化特征演化特征不变性局部遮挡测试敏感性分析相关性分析消融实验宽度影响深度影响迁移学习能力有效性分析总结引言 纽约大学ZFNet&#xff0c;2013年ImageNet图像分类竞赛冠军模型。对AlexNet进行改进的…

AOP 操作

AOP 操作AOP 操作&#xff08;准备&#xff09;1. Spring 框架一般是基于 AspectJ 实现 AOP 操作&#xff08;1&#xff09;什么是 AspectJ2. 基于 AspectJ 实现 AOP 操作3. 在项目工程里面引入 AOP 先关的依赖4. 切入点表达式举例1&#xff1a;对 com.fairykunkun.dao.UserDao…

谈谈自己对依赖注入的理解

1. 絮絮叨叨 1.1 想学习Google Guice 在工作的过程中&#xff0c;发现有名的大数据组件Presto大量使用Google Guice实现各种Module的构建 很多bind(interface).to(implementClass).in(scope)语句&#xff0c;实现接口与实现类的绑定&#xff0c;并指定实现类是单例还是多例 /…

Service的绑定过程

前言 Service的绑定过程将分为两个部分来进行讲解&#xff1b;分别是Contextlmpl到AMS的调用过程和Service的绑定过程。 frameworks/base/core/java/android/content/ContextWrapper.javapublic boolean bindService(Intent service, ServiceConnection conn,int flags) {ret…

计算机毕设Python+Vue-新型冠状病毒防控咨询网站(程序+LW+部署)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

根据端口划分虚拟局域、集线器、中继器、交换机、路由器、网桥----计算机网络

集线器&#xff1a; 连接计算机和交换机&#xff0c;类似于多台中继器。 实现多台电脑的同时使用一个进线接口来上网或组成局域网 中继器&#xff1a; 连接两条电缆&#xff0c;作用是放大前一条电缆里面的信号并传入下一条电缆。 是对接收到的信息进行再生放大&#xff0c;以…

Jenkins + Jmeter + Ant 持续集成

搭建提前安装好&#xff1a;ant Jenkins 环境 一、Jenkins 安装 Ant 插件&#xff1a; 进入Jenkins 配置插件页面&#xff0c;安装ant 插件&#xff1a; 打开插件配置页面&#xff0c;如下图&#xff1a; 点击“Available” 在输入框搜索 ant 安装即可&#xff1a; 二、安装…

计算机毕业设计springboot+vue基本微信小程序的透析耗材管理系统

项目介绍 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理程序应运而生,各行各业相继进入信息管理时代,透析耗材管理小程序就是信息时代变革中的产物之一。 任何程序都要遵循…

vue前端案例教学:动态获取最新疫情数据展示(代码详解)

【辰兮要努力】&#xff1a;hello你好我是辰兮&#xff0c;很高兴你能来阅读&#xff0c;昵称是希望自己能不断精进&#xff0c;向着优秀程序员前行&#xff01; 博客来源于项目以及编程中遇到的问题总结&#xff0c;偶尔会有读书分享&#xff0c;我会陆续更新Java前端、后台、…

[leetcode.4]寻找两个正序数组的中位数 多思考边界

题目展示 题目要点 题目其实本身的思路非常简单&#xff0c;就是把两个数组给合并起来&#xff0c;然后寻找中位数&#xff0c;具体可以参考我们使用归并排序时候的最后一步&#xff0c;这题的难点其实在于&#xff08;1&#xff09;时间压缩到lognm&#xff08;2&#xff09;…

[附源码]Nodejs计算机毕业设计基于与协同过滤算法的竞赛项目管理Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

基于MMEngine和MMDet搭建目标跟踪框架MMTracking-1.0.0rc1-Win10

缘由&#xff1a; 1. 目标跟踪是工业检测和学术研究的基础课题&#xff0c;其pipeline通常分为视频目标检测、视频实例分割、单目标跟踪、多目标跟踪和Re-ID五类&#xff0c;同时&#xff0c;还细分为在线检测和离线检测两种任务模式。由于现阶段关于目标跟踪的教程较少&#…

机器学习 KNN算法原理

目录 一&#xff1a;KNN算法概念 二&#xff1a;KNN原理 三&#xff1a;KNN超参数 四&#xff1a;KNN算法选择 一&#xff1a;KNN算法概念 KNN(K-Nearest Neighbor)法即K最邻近法&#xff0c;最初由Cover和Hart于1968年提出&#xff0c;是最简单的机器学习算法之一 算法思路…

NNDL 作业9:分别使用numpy和pytorch实现BPTT

6-1P&#xff1a;推导RNN反向传播算法BPTT. 6-2P&#xff1a;设计简单RNN模型&#xff0c;分别用Numpy、Pytorch实现反向传播算子&#xff0c;并代入数值测试.、 forward&#xff1a; 我们知道循环卷积网络的cell的计算公式为&#xff1a; stf(UxtWst−1)\mathrm{s}_tf(…

UML学习入门

UML 举一个简单的例子&#xff0c;来看这样一副图&#xff0c;其中就包括了UML类图中的基本图示法。 首先&#xff0c;看动物矩形框&#xff0c;它代表一个类&#xff08;Class&#xff09;。类图分三层&#xff0c;第一层显示类的名称&#xff0c;如果是抽象类&#xff0c;则…

多模块之前的消息引用问题

多模块引用之前的问题目录概述需求&#xff1a;设计思路实现思路分析1.在第一个模块中调用另一个调用模块的Bean2.普通java类 如何获取另一个模块的Bean3.启用消息机制4.为什么普通java类很难调用SpringBean的&#xff1f;参考资料和推荐阅读Survive by day and develop by nig…

机器学习快速上手基础

努力是为了不平庸~ 学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。 目录 一、简介与应该明确的学习方法 1、学习方法 2、简介 二、学习机器学习的优势 三、机器学习的内核 1、学习术语 2、内核 四、机器学习…

IT团队自动化端点管理解决方案—基于虹科Chef工具

企业如何简化端点管理工作流程&#xff1f; 如何解决安全事件&#xff1f;如何生成审计报告&#xff1f;如何处理大量账单&#xff1f;这些都是企业IT团队需要考虑的问题。然而&#xff0c;IT人员每天有大量的事情需要处理&#xff0c;如何自动化、标准化、及时性的处理这些问…