django - DRF 如何使用@action 更新电子邮件?
问题描述
当我尝试更新经过身份验证的用户但它正在创建新用户时。问题出在哪里?
看法
class UserViewSet(mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.DestroyModelMixin,
viewsets.GenericViewSet):
permission_classes = (IsAuthenticated,)
serializer_class = UserSerializer
def get_object(self):
return self.request.user
行动
@action(methods=['PATCH'], detail=False)
def change_email(self, *args, **kwargs):
user = self.get_object()
serializer = serializers.UserEmailSerializer(data=self.request.data, context={'request': self.request})
serializer.is_valid(raise_exception=True)
serializer.save()
self.send_email(user.email)
return Response({'Confirm yours new email'}, status=status.HTTP_200_OK)
用于操作的序列化程序
class UserEmailSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'email')
read_only_fields = ('id',)
解决方案
推荐阅读
- sql - SQL (MS SQL Server) 返回列值作为乘法的结果
- python - 使用多处理加载 Pandas 数据框
- python-3.x - 更新和解决 Google 表格中的评论
- javascript - Node.js 单线程机制
- python - 根据一些重复的索引选择 3d 张量的行。棘手的切片
- c - 运算符如何在表达式优先级方面工作?
- marklogic - MarkLogic 数据中心安装和升级
- java - java8如何转换Future
到 CompleteableFuture - python-3.x - PermissionError: [Errno 13] Permission denied based on file size
- c# - 在 .net core web api 中实现基于用户的授权过滤器