Получение текущего зарегистрированного пользователя в django Rest Framework

Я пытаюсь получить текущего залогиненного пользователя и загрузить/отправить информацию на фронтенд. Я новичок в Rest Framework, поэтому простите мой вопрос на базовом уровне.

Я пробовал получить пользователя с помощью request.user и request.auth в моих представлениях, но я не могу просто получить пользователя. Это мой views.py

from rest_framework.authtoken.models import Token

def get_User (request):
    # current_user = request.user
    # context = {"user": current_user}
    # print(request.user.username)

    user_id = Token.objects.get(key=request.auth.key).user_id
    print(request.auth)

    # Response(context)

Я использую пользовательскую модель пользователя для хранения данных.

Каждый раз, когда я запускаю request.auth или request.user, я вижу в терминале django, что он продолжает переходить к URL /verify-auth-token/.

Как сделать так, чтобы пользовательская печать, также отправленная на фронтенд в React, отображалась и в приложении. Любая помощь будет принята с благодарностью.

Сначала убедитесь, что в настройках MIDDLEWARE_CLASSES добавлены промежуточные модули SessionMiddleware и AuthenticationMiddleware.

Текущий пользователь находится в объекте request, вы можете получить его по:

def sample_view(request): current_user = request.user print(current_user)

request.user передаст вам объект User, представляющий вошедшего в систему пользователя. Если пользователь не вошел в систему, request.user будет установлен в экземпляр AnonymousUser. Вы можете отличить их с помощью поля is_authenticated, например, так:

if request.user.is_authenticated: # Сделайте что-нибудь для аутентифицированных пользователей. else: # Сделайте что-нибудь для анонимных пользователей.

Надеюсь, что это сработает!!!

Спасибо!!!

Если вы работаете с DRF и хотите передать информацию вашему фронтенду, вы не можете использовать request.user, поскольку request работает с сессиями.

Для идентификации пользователя вам нужно связать токен с пользователем, а затем передать ассоциированный объект user во фронтенд, и наоборот, вот небольшой пример :

def get_user_by_token(token):
 user_id = Token.objects.get(key=request.auth.key).user_id
 user = Users.object.get(id =user_id)
 return JsonResponse({"user": user.id})

Таким образом, вы можете вернуть что угодно в формате JSON на ваш фронтенд, как только пользователь будет связан с токеном

Вернуться на верх