Django REST框架ObtainAuthToken用户登录Api视图

时间:2019-10-28 09:44:58

标签: django django-models django-rest-framework django-views

你好Django社区,

我想在用户验证身份时将电子邮件和用户ID连同令牌一起发送回去。我想我必须更改UserLoginApiView类,但是我不知道如何重写ObtainAuthToken类来实现这一点。

有人建议这样做会很有帮助吗?

class UserLoginApiView(ObtainAuthToken):
    """Handle creating user authentication tokens"""
    renderer_classes = api_settings.DEFAULT_RENDERER_CLASSES

这是我在Github上的全部代码:https://github.com/KrestouferT/profiles-rest-api

1 个答案:

答案 0 :(得分:0)

docs中,它表明您可以在ObtainAuthToken中覆盖发布请求的返回响应:

  

如果需要自定义版本的gain_auth_token视图,则可以   通过子类化ObtainAuthToken视图类并使用   而是在您的url conf中。

     

例如,您可以返回除   令牌值:

from rest_framework.authtoken.views import ObtainAuthToken
from rest_framework.authtoken.models import Token
from rest_framework.response import Response

class CustomAuthToken(ObtainAuthToken):

    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,
            'user_id': user.pk,
            'email': user.email
        })

在您的urls.py中:

urlpatterns += [
    url(r'^api-token-auth/', CustomAuthToken.as_view())
]