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/')