Files
diary-system/backend/authentication/views.py

55 lines
1.8 KiB
Python
Raw Normal View History

from rest_framework import generics, permissions, status
from rest_framework.response import Response
from rest_framework.authtoken.serializers import AuthTokenSerializer
from django.contrib.auth import login, logout
from django.contrib.auth.models import User
from .serializers import UserSerializer, RegisterSerializer, LoginSerializer
class RegisterView(generics.CreateAPIView):
"""用户注册"""
serializer_class = RegisterSerializer
permission_classes = [permissions.AllowAny]
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
user = serializer.save()
return Response({
'user': UserSerializer(user).data,
'message': '注册成功'
}, status=status.HTTP_201_CREATED)
class LoginView(generics.GenericAPIView):
"""用户登录"""
serializer_class = LoginSerializer
permission_classes = [permissions.AllowAny]
def post(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
user = serializer.validated_data
login(request, user)
return Response({
'user': UserSerializer(user).data,
'message': '登录成功'
})
class LogoutView(generics.GenericAPIView):
"""用户登出"""
permission_classes = [permissions.IsAuthenticated]
def post(self, request, *args, **kwargs):
logout(request)
return Response({'message': '登出成功'})
class CurrentUserView(generics.RetrieveAPIView):
"""当前用户信息"""
serializer_class = UserSerializer
permission_classes = [permissions.IsAuthenticated]
def get_object(self):
return self.request.user