11用户中心--地址页

user/urls.pyhtml

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.pydjango

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.htmljson

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