程序员代码量小的原因。html--一页双功能的实现

1,<a href="/buyer/change_address/?id={{ address.id }}">修改</a> <a href="/buyer/add_address/" style="color: white;">新增地址</a>

首先我们需要在需要修改的跳转标签处添加分页标志id值。在跳转到下一个页面时可以把已经有的值放在表单中。
2,html核心代码展示

<form method="post" action="/buyer/add_address/">
            {% csrf_token %}
            <div class="line">
                <label>收货人姓名</label>
                 <input type="text" name="buyer" class="input" value="{{ addr.recver }}"/>
            </div>
            <div class="line">
                <label>收货人电话</label>
                 <input type="text" name="buyer_phone" class="input" value="{{ addr.phone }}"/>
            </div>
            <div class="line">
               <label>收货人地址</label>
                 <input type="text" name="buyer_address" class="input" value="{{ addr.address }}"/>
            </div>

            <div class="line">
                {% if addr.recver %}
                <input type="submit" value="修改地址" class="btn" name="type"/>
                    {# 设置name值用于获取,区分是修改还是新增。设置隐藏域,在修改时addr的其他属性可能会被修改 #}
                    {#id值一直都是被修改对象的属性,不会变为修改后的属性#}
                    <input type="hidden" value="{{ addr.id }}" name="id">
                {% else %}
                <input type="submit" value="新增地址" class="btn" name="type"/>
                {% endif %}
            </div>
        </form>

3,views中核心代码

def add_address(request):
    #修改时选择获取表单中的内容,并新增一个数据,再删除原来的数据
    if request.method=='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')
        print(request.COOKIES)
        print(request.session)
        addr.buyer=Buyer.objects.get(id=int(user_id))
        addr.save()
        if request.POST.get('type')=='修改地址':#当type值为修改地址时删除原来的地址(核心)
            address_id = request.POST.get('id')
            addr_delete = Address.objects.get(id=int(address_id))
            addr_delete.delete()
        return redirect('/buyer/address/')
    return render(request,'buyer/addAddress.html')

@buyer_decorator
def change_address(request):
    try:
        address_id=request.GET.get('id')#当为修改时,获取设置的id值
        addr=Address.objects.get(id=int(address_id))#通过id值获取被修改的对象
        return render(request,'buyer/addAddress.html',{'addr':addr})#跳转到修改页面
    except:
        return redirect('/buyer/address/')

猜你喜欢

转载自blog.csdn.net/weixin_44204091/article/details/88201174