Reputation: 294
I am trying to get a first_name and last_name for logged in user. I could get them but they are displayed as :
<QuerySet [{'first_name': 'steven'}]>
I want to display only steven
here is the view function:
def user_profile(request):
username = None
if request.user.is_authenticated():
username = request.user.username
pk = request.user.id
first_name = MyUser.objects.filter(pk=pk).values('first_name')
context = {
'username': username,
'pk' :pk,
'first_name': first_name,
}
return render(request, 'path/to/user_profile.html', context)
in the template file:
{{first_name}}
Upvotes: 1
Views: 31
Reputation: 477769
You make it rather complicated: request.user
is a User
object. So you can fetch the .first_name
and .last_name
from it directly:
def user_profile(request):
if request.user.is_authenticated():
context = {
'username': request.user.username,
'pk': request.user.pk,
'first_name': request.user.first_name,
}
else:
context = {
'username': None,
'pk' : None,
'first_name': None,
}
return render(request, 'path/to/user_profile.html', context)
So this instance is already loaded. Sure you can fetch it with a query. But why do duplicated work?
Upvotes: 2