Reputation: 56
Hello, everyone! So, I create models in
models.py
file of my django project and controllers inviews.py
. I wrote a function calledregister(request)
that add a new user to my database and another calledlogin(request)
that verifies if the datas sent by the user are in my db to log him in. Brief, the problem is when I want to print the user's first name in my template, it shows to me the object in string ...Here is the
login(request)
function:
def login(request):
title = 'Connexion'
if request.method == 'POST':
email_sent = request.POST['email']
password_sent = request.POST['password'].encode('utf-8')
global isConnected
user = Users.objects.filter(email = email_sent)
if user and bcrypt.checkpw(password_sent, user[0].password):
if isConnected in request.session:
isConnected = request.session['isConnected']
return redirect('http://localhost:8000/',
{'isConnected':isConnected,
'first_name':user[0].first_name,
'last_name':user[0].first_name})
else:
request.session['id'] =user[0].first_name
request.session['first_name'] = user[0].first_name
request.session['last_name'] = user[0].first_name
request.session['phone'] = user[0].first_name
isConnected = True
return redirect('http://localhost:8000/',
{'isConnected':isConnected,
'first_name':user[0].first_name })
else:
print('Something went wrong')
return render(request, 'login.html',
{'title':title, 'isConnected':isConnected})
return render(request, 'login.html',
{'title':title, 'isConnected':isConnected})
else:
return render(request, 'login.html',
{'title':title, 'isConnected':isConnected })
Here is what I represent the user's first_name variable in my template:
<span class="initials" style="...">{{ first_name }}</span>
And that is it prints to me:
<django.db.models.query_utils.DeferredAttribute object at 0x0000017850EE7A00>
Upvotes: 1
Views: 775
Reputation: 131
just use .first() end of your query as:
user = Users.objects.filter(email = email_sent).first()
so you have the first object and don't need to slicing. remember that Django queries are lazy.
Upvotes: 2