from rest_framework import generics from rest_framework.permissions import AllowAny, IsAuthenticated from rest_framework.response import Response from rest_framework.views import APIView from django.contrib.auth import get_user_model from .serializers import RegisterSerializer, UserSerializer, AdminUserSerializer from .permissions import IsSuperAdmin User = get_user_model() class RegisterView(generics.CreateAPIView): serializer_class = RegisterSerializer permission_classes = [AllowAny] class MeView(APIView): permission_classes = [IsAuthenticated] def get(self, request): return Response(UserSerializer(request.user).data) def patch(self, request): serializer = UserSerializer(request.user, data=request.data, partial=True) serializer.is_valid(raise_exception=True) serializer.save() return Response(serializer.data) class UserManageViewSet(generics.ListCreateAPIView): """超管:管理所有用户""" serializer_class = AdminUserSerializer permission_classes = [IsSuperAdmin] queryset = User.objects.all() class UserDetailView(generics.RetrieveUpdateDestroyAPIView): serializer_class = AdminUserSerializer permission_classes = [IsSuperAdmin] queryset = User.objects.all()