Django REST Framework ObtainAuthToken Вход пользователя в систему Api view - PullRequest
0 голосов
/ 28 октября 2019

Здравствуйте, сообщество Django,

Я хочу отправить обратно электронное письмо и идентификатор пользователя вместе с токеном, когда пользователь аутентифицируется. Я думаю, что мне нужно изменить класс 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 голосов
/ 29 октября 2019

В документах он сообщает, что вы можете переопределить ответ на запрос на публикацию в ObtainAuthToken:

Если вам нужна настроенная версия представления receive_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())
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...