1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- from rest_framework import parsers, renderers
- from rest_framework.authtoken.models import Token
- from rest_framework.authtoken.serializers import AuthTokenSerializer
- from rest_framework.compat import coreapi, coreschema
- from rest_framework.response import Response
- from rest_framework.schemas import ManualSchema
- from rest_framework.views import APIView
- class ObtainAuthToken(APIView):
- throttle_classes = ()
- permission_classes = ()
- parser_classes = (parsers.FormParser, parsers.MultiPartParser, parsers.JSONParser,)
- renderer_classes = (renderers.JSONRenderer,)
- serializer_class = AuthTokenSerializer
- if coreapi is not None and coreschema is not None:
- schema = ManualSchema(
- fields=[
- coreapi.Field(
- name="username",
- required=True,
- location='form',
- schema=coreschema.String(
- title="Username",
- description="Valid username for authentication",
- ),
- ),
- coreapi.Field(
- name="password",
- required=True,
- location='form',
- schema=coreschema.String(
- title="Password",
- description="Valid password for authentication",
- ),
- ),
- ],
- encoding="application/json",
- )
- def post(self, request, *args, **kwargs):
- serializer = self.serializer_class(data=request.data,
- context={'request': request})
- serializer.is_valid(raise_exception=True)
- user = serializer.validated_data['user']
- token, created = Token.objects.get_or_create(user=user)
- return Response({'token': token.key})
- obtain_auth_token = ObtainAuthToken.as_view()
|