user/models.py中
AddressManage class (models.Manager): '' ' Address Management Type ' '' DEF get_default_addr (Self, User): '' ' get the default shipping address ' '' the try : address = self.get (User = User, the is_default = True) the except self.model.DoesNotExist: # absence of default shipping address address = None return address class the address (BaseModel): '' ' address model class '' ' User = models.ForeignKey ( ' the User ' , the verbose_name = 'Your account ', On_delete = models.CASCADE,) Receiver = models.CharField (= 20 is MAX_LENGTH, the verbose_name = ' recipient ' ) addr = models.CharField (MAX_LENGTH = 256, the verbose_name = ' recipient address ' ) ZIP_CODE = models.CharField ( 6 = max_length, null = True, verbose_name = ' ZIP Code ' ) phone = models.CharField (= max_length 11, verbose_name = ' telephone ' ) is_default = models.BooleanField (default = False, verbose_name = ' whether the default ' ) # customize a model manager object objects = AddressManage() class Meta: db_table = 'df_address' verbose_name = '地址' verbose_name_plural = verbose_name
Call the method directly in the view function views.py
# User address # / User / address from user.models Import the Address class AddressView (LoginRequiredMinxin, View): DEF GET (Self, Request): '' ' user information page ' '' # obtains the address information of User = the request.user address = Address.objects.get_default_addr (User) Print (address) return the render (Request, ' user_center_site.html ' , { ' Page ' : ' address ' , 'address':address}) def post(self, request): '''添加地址''' # 接收数据 receiver = request.POST.get('receiver') zip_code = request.POST.get('zip_code') addr = request.POST.get('addr') phone = request.POST.get('phone') # 校验数据 if not all([receiver, addr, phone]): return render(request, ' User_center_site.html ' , { ' ErrMsg ' : ' incomplete data ' }) IF Not re.match (R & lt ' ^. 1 [. 3 |. 4 |. 5 |. 7 |. 8] [0-9] {} $. 9 ' , phone): return the render (Request, ' user_center_site.html ' , { ' ErrMsg ' : ' Mobile Malformed ' }) # business process: Add address # If the user has a default shipping address, add the address does not exist as a default closed address goods, otherwise known as the default shipping address # to obtain the login user user object corresponding to the user = request.user address= Address.objects.get_default_addr(user) if address: is_default = False else: is_default = True # 添加地址 Address.objects.create(user=user, receiver=receiver, zip_code=zip_code, addr=addr, phone=phone, is_default=is_default) #Returns a response to refresh the page return redirect (Reverse ( ' the User: address ' ))