Как вернуть идентификатор пользователя в HTTP-ответе после входа пользователя в систему с помощью DRF-токена аутентификации?

В моем приложении есть конечная точка /login, где пользователи могут вводить свои данные для входа, и после того, как пользователь прошел аутентификацию, я хотел бы отобразить представление DRF на основе идентификатора пользователя в качестве параметра в URL. Каков наилучший способ сделать это? Нужно ли мне включить идентификатор пользователя в HTTP-ответ, и если да, то как это сделать?

Вот как выглядит представление логина и сериализатор :

view.py

class LogInView(TokenObtainPairView):
    serializer_class = LogInSerializer

serializer.py

class LogInSerializer(TokenObtainPairSerializer):
    @classmethod
    def get_token(cls, user):
        token = super().get_token(user)
        user_data = ManagerSerializer(user).data
        for key, value in user_data.items():
            if key != 'id':
                token[key] = value
        return token

Представление, которое я хочу отобразить после входа пользователя в систему, выглядит следующим образом :

view.py

class AccountDetails(RetrieveAPIView):
    serializer_class = AccountSerializer
    queryset = Account.objects.all()

urls.py

router = routers.DefaultRouter()

urlpatterns = [
    path('', include(router.urls)),
    path('account/<pk>', AccountDetails.as_view()),

]

Зачем вам нужен идентификатор пользователя? Вы можете запросить его самостоятельно из request.user. Вам просто нужно переопределить метод get_object в RetrieveApiView:

class AccountDetails(RetrieveAPIView):
    serializer_class = AccountSerializer
    queryset = Account.objects.all()
    
    def get_object(self):
        return request.user
Вернуться на верх