地址的增删改查都写在一个函数里面所以使用viewsets.ModelViewSet
可以看到他继承了我们所有的增删改查
serializer:
class AddressSerializer(serializers.ModelSerializer):
signer_mobile=serializers.CharField(max_length=11,help_text="联系电话")
# 获取当前登陆的用户
user = serializers.HiddenField(
default=serializers.CurrentUserDefault()
)
def validate_signer_mobile(self,signer_mobile):
"""
验证手机号码
:param data:
:return:
"""
# 验证手机号码是否合法
if not re.match(REGEX_MOBILE,signer_mobile):
raise serializers.ValidationError("手机号码非法")
class Meta:
model = UserAddress
fields = ("id","user", "province", "city","district","address","signer_name","signer_mobile")
view:
class AddressViewSet(viewsets.ModelViewSet):
"""
地址管理
create:添加地址
destroy:删除地址
list:查询地址
update:修改地址
"""
serializer_class = AddressSerializer
permission_classes = (IsAuthenticated, IsOwnerOrReadOnly)
authentication_classes = (JSONWebTokenAuthentication, SessionAuthentication)
def get_queryset(self):
return UserAddress.objects.filter(user=self.request.user)