Как получить текущие данные пользователя в django
Я пытаюсь получить данные зарегистрированного пользователя, но получаю только имя пользователя
Попробовал эти коды
user= User.objects.get(id=user_id)
user= User.objects.filter(id=emp_data.user_id).first()
user =request.user
этот 3 запрос возвращает имя пользователя
как я могу получить данные пользователя
Эти запросы не возвращают имя пользователя, они возвращают объект User. Вы можете получить доступ к атрибутам объекта, таким как user.name user.email и т.д.
Возможно, вы используете функцию print()
для печати объекта, поэтому вы видите имя пользователя. Это имя пользователя происходит из этой реализации (источник на GitHub):
def __str__(self):
return self.get_username()
Где метод get_username()
возвращает имя пользователя, а print выполняет функцию __str__
. Если вы хотите увидеть больше свойств или методов объекта, используйте print(dir(user))
или отладку с помощью IDE (или с помощью pdb
). Вы можете увидеть тип объекта по функции type(user)
.
Попробуйте это:
user = User.objects.get(id=user_id)
print(user.__dict__)
Это даст вам все атрибуты класса User
Вы можете попробовать:
def user_information(request, pk):
user_infor = get_objects_or_404(User, id=pk)
return render(request, 'infor.html', {'user_infor':user_infor})
А в вашем infor.html вы можете получить информацию о пользователе по:
<p>{{user_infor.user.email}}</p>
<p>{{user_infor.user.username}}</p>