Django REST Frameworkに再挑戦 その20 Base APIView for User Login
概要
Django REST Frameworkに再挑戦 その20 Base APIView for User Login
参考サイト
www.codingforentrepreneurs.com
Base APIView for User Login
- UserLoginSerializerというclassを新たに作成する。
class UserLoginSerializer(ModelSerializer): token = CharField(allow_blank=True, read_only=True) username = CharField() email = EmailField(label='Email Address') class Meta: model = User fields = [ 'username', 'email', 'password', 'token', ] extra_kwargs = {"password": {"write_only": True} } def validate(self, data): # email = data['email'] # user_qs = User.objects.filter(email=email) # if user_qs.exists(): # raise ValidationError("すでにこちらのアドレスは登録されています。") return data
- accounts/api/views.pyにLoginViewを作成する。
class UserLoginAPIView(APIView): permission_classes = [AllowAny] serializer_class = UserLoginSerializer def post(self, request, *args, **kwargs): data = request.data # request.POST serializer = UserLoginSerializer(data=data) if serializer.is_valid(raise_exception=True): new_data = serializer.data return Response(new_data, status=HttP_200_OK) # ここのresponseは、rest_frameworkのAPIなので注意。 return Response(serializer.errors, status=HTTP_400_BAD_REQUEST)