jin-ting

11用户中心--地址页

user/urls.py

from django.urls import path
from .import views

urlpatterns = [
    path(\'register/\',views.RegisterView.as_view()), # 注册
    path(\'active/<token>\',views.ActiveView.as_view()), # 用户激活
    path(\'login/\',views.LoginView.as_view()), # 登录
    path(\'login_out/\',views.LoginOut.as_view()), # 退出登录
    path(\'\',views.UserInfoView.as_view()), # 用户中心-个人信息
    path(\'order/\',views.UserOrderView.as_view()), # 用户中心-全部订单
    path(\'address/\',views.UserAddress.as_view()), # 用户中心-收货地址

]

user/views.py

class UserAddress(View):
    \'\'\'用户中心-地址页\'\'\'
    def get(self, request):

        if \'user\' not in request.session:
            return redirect(\'/user/login/\')

        #  获取用户默认收货地址
        user = jsonpickle.loads(request.session.get(\'user\',\'\'))

        try:
            address = Address.objects.get(user=user,is_default=True)
        except Address.DoesNotExist:
            # 不存在默认收货地址
            address = None

        return render(request, \'user_center_site.html\',{\'page\':\'address\',\'address\':address})

    def post(self,request):
        # 接受数据
        receiver = request.POST.get(\'receiver\', \'\')
        addr = request.POST.get(\'addr\', \'\')
        zip_code = request.POST.get(\'zip_code\', \'\')
        phone = request.POST.get(\'phone\', \'\')

        # 校验数据
        if not all([receiver,addr,zip_code,phone]):
            return render(request,\'user_center_site.html\',{\'errmsg\':\'信息不完整\'})

        # 验证手机号
        if not re.match(r\'^1[3|4|5|7|8][0-9]{9}$\',phone):
            return render(request, \'user_center_site.html\', {\'errmsg\': \'手机格式错误\'})

        # 获取session
        user = jsonpickle.loads(request.session.get(\'user\'))

        # 添加地址
        # 如果用户已存在默认收货地址,添加的地址不作为默认收货地址,否则作为默认收货地址
        try:
            address = Address.objects.get(user=user,is_default=True)
        except Address.DoesNotExist:
            # 不存在默认收货地址
            address = None

        # 如果存在默认收货地址
        if address:
            is_default = False
        else:
            is_default = True

        # 添加地址
        Address.objects.create(user=user,receiver=receiver,addr=addr,zip_code=zip_code,phone=phone,is_default=is_default)

        return redirect(\'/user/address/\')

user_center_site.html

<div class="site_con">
	<dl>
		<dt>当前地址:</dt>
        {% if address %}
		<dd>{{ address.addr }} ({{ address.receiver }})收 {{ address.phone }}</dd>
        {% else %}
        <dd>无默认地址</dd>
        {% endif %}
	</dl>					
</div>

分类:

技术点:

相关文章:

  • 2021-11-27
  • 2021-11-19
  • 2021-12-17
  • 2021-04-27
  • 2021-09-21
  • 2021-11-19
  • 2021-12-31
猜你喜欢
  • 2018-09-14
  • 2021-12-14
  • 2021-10-06
  • 2021-11-06
  • 2021-09-15
  • 2021-10-09
  • 2021-11-30
相关资源
相似解决方案