Django 商城地址管理

更新时间:2019-03-14 17:47:15 点击次数:1318次
视图界面views():

# 地址列表页
def address(request):
    # 查收此用户对应的所有地址显示到页面上
    buyer_id = request.COOKIES.get('user_id') #获取登录页面的ID
    addr_lst = Address.objects.filter(buyer_id=buyer_id) #显示对应ID的所有收货地址
    # print(addr_lst)
    return render(request, 'buyer/address.html', {'addr_lst': addr_lst}) #使用<for>标签循环套取 (addr_lst)使用


# 添加地址
def add_address(request):
    if request.method == 'POST': #如果提交方式是POST
        buyer_name = request.POST.get('buyer') #提交的数据
        buyer_phone = request.POST.get('buyer_phone')
        buyer_address = request.POST.get('buyer_address')
        addr = Address() #建立与地址数据的链接
        addr.address = buyer_address    # 数据对应
        addr.phone = buyer_phone
        addr.recver = buyer_name
        user_id = request.COOKIES.get('user_id')
        addr.buyer = Buyer.objects.get(id=int(user_id))#   addr.buyer_id=  自动补齐 _id 看modles
        addr.save()  #存入数据库
        return redirect('/buyer/address/')  #重定向到地址页面
    return render(request, 'buyer/addAddress.html')


# 修改地址
def change_address(request):
    if request.method == 'GET': # 删除和修改html提交方式是<a>标签 用的是GET 方式
        address_id = request.GET.get('id') 
        address_obj = Address.objects.get(id=address_id)
        return render(request, 'buyer/changeAddress.html', {'address_obj': address_obj})
    else:        # POST提交方式
        """保存修改的内容"""
        buyer_name = request.POST.get('buyer')  #获取页面提交的内容
        buyer_phone = request.POST.get('buyer_phone')
        buyer_address = request.POST.get('buyer_address')
        address_id = request.POST.get('id')  #之前页面显示的数据是用<form>标签ID获取的,
        addr = Address.objects.get(id=address_id) #获取数据库这条ID信息并修改数据库原有ID值
        addr.address = buyer_address
        addr.phone = buyer_phone
        addr.recver = buyer_name
        addr.save()#保存
        return redirect('/buyer/address/') #重定向到地址页面


地址html界面

  <table width="100%" cellpadding="0" cellspacing="0" border='0px'>
                <tr>
                    <th width='10%'>
                        <input type="checkbox" id="all"
                               style="margin-top: 20px; margin-left: 10px;width: 24px; height: 24px;">
                    </th>
                    <th width='10%'>收货人</th>
                    <th width='10%'>电话</th>
                    <th width='60%'>地址</th>
                    <th width='10%'>操作</th>
                </tr>
                {% for address in addr_lst %}
                #循环套取数据库对象(行)
                    <tr>
                        <th width='10%'>
                            <input type="checkbox" id="all"
                                   style="margin-top: 20px; margin-left: 10px;width: 24px; height: 24px;">
                        </th>
                        <th width='10%'>{{ address.recver }}</th>
                        <th width='10%'>{{ address.phone }}</th>
                        <th width='70%'>{{ address.address }}</th>
                        <th width='70%'>
                            <a href="/buyer/change_address/?id={{ address.id }}">修改</a> #get
                            <a href="/buyer/del_address/{{ address.id }}/">删除</a> #get
                        </th>
                    </tr>
                {% endfor %}
            </table>

地址添加HTML

  <form method="post" action="/buyer/add_address/">  #提交给 (add_address)方法  
                {% csrf_token %}
                <div class="line">
                    <label>收货人姓名</label>
                    <input type="text" name="buyer" class="input"/>
                </div>
                <div class="line">
                    <label>收货人电话</label>
                    <input type="text" name="buyer_phone" class="input"/>
                </div>
                <div class="line">
                    <label>收货人地址</label>
                    <input type="text" name="buyer_address" class="input"/>
                </div>

                <div class="line">
                    <input type="submit" value="新增地址" class="btn" />
                </div>
            </form>

修改地址页面HTML

 <form method="post" action="/buyer/change_address/"> #提交给 (change_address)方法  
                <input type="hidden" name="id" value="{{ address_obj.id }}">
                {% csrf_token %}
                <div class="line">
                    <label>收货人姓名</label>
                    <input type="text" name="buyer" class="input" value="{{ address_obj.recver }}"/>
                </div>
                <div class="line">
                    <label>收货人电话</label>
                    <input type="text" name="buyer_phone" class="input" value="{{ address_obj.phone }}"/>
                </div>
                <div class="line">
                    <label>收货人地址</label>
                    <input type="text" name="buyer_address" class="input" value="{{ address_obj.address }}"/>
                </div>

                <div class="line">
                    <input type="submit" value="修改地址" class="btn"/>
                </div>
            </form>

删除地址views.py()

# 删除地址
def del_address(request, address_id):
    address_obj = Address.objects.get(id=int(address_id),buyer_id=int(request.COOKIES.get('user_id')))
    #删除对应的ADDress 里面的  ID
    address_obj.delete()

    return redirect('/buyer/address/')

删除页HTML 在地址页面添加 (上面地址页面已经写好了)


本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

回到顶部
嘿,我来帮您!