mirror of
				https://github.com/encode/django-rest-framework.git
				synced 2025-10-25 05:01:28 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			63 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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.schemas import coreapi as coreapi_schema
 | |
| 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_schema.is_enabled():
 | |
|         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 get_serializer_context(self):
 | |
|         return {
 | |
|             'request': self.request,
 | |
|             'format': self.format_kwarg,
 | |
|             'view': self
 | |
|         }
 | |
| 
 | |
|     def get_serializer(self, *args, **kwargs):
 | |
|         kwargs['context'] = self.get_serializer_context()
 | |
|         return self.serializer_class(*args, **kwargs)
 | |
| 
 | |
|     def post(self, request, *args, **kwargs):
 | |
|         serializer = self.get_serializer(data=request.data)
 | |
|         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()
 |