'How can I get the username of the logged-in user in Django?
How can I get information about the logged-in user in a Django application?
For example:
I need to know the username of the logged-in user to say who posted a Review:
<form id='formulario' method='POST' action=''>
<h2>Publica tu tuit, {{ usuario.username.title }} </h2>
{% csrf_token %}
{{formulario.as_p}}
<p><input type='submit' value='Confirmar' /></p>
</form>
In usuario.username.title I get the username, but in the template, I need to get that information from the view.
Solution 1:[1]
You can use the request object to find the logged in user
def my_view(request):
username = None
if request.user.is_authenticated():
username = request.user.username
According to https://docs.djangoproject.com/en/2.0/releases/1.10/
In version Django 2.0 the syntax has changed to
request.user.is_authenticated
Solution 2:[2]
request.user.get_username() or request.user.username, former is preferred.
Since the User model can be swapped out, you should use this method instead of referencing the username attribute directly.
P.S. For templates, use {{ user.get_username }}
Solution 3:[3]
'request.user' has the logged in user.
'request.user.username' will return username of logged in user.
Solution 4:[4]
For classed based views use self.request.user.id
Solution 5:[5]
if you are using the old way of writting views, in the way of Function-Based-Views...
in your view, you are creating a new variable called usuario to save the request.user probably...
but if you returning to the Template a context_instance, passing the value of the Context of the request, you will get the logged user, just by accessing the request.
// In your views file
from django.shortcuts import render_to_response
from django.template import RequestContext
def your_view(request):
data = {
'formulario': Formulario()
# ...
}
return render_to_response('your_template.html',
data, context_instance=RequestContext(request))
// In your template
<form id='formulario' method='POST' action=''>
<h2>Publica tu tuit, {{ request.user.username.title }} </h2>
{% csrf_token %}
{{ formulario.as_p }}
<p><input type='submit' value='Confirmar' /></p>
</form>
Solution 6:[6]
You can use this to get the logged-in user's username :-
Just write this in template.
{{ request.user.username }}
Solution 7:[7]
request.user.get_username() will return a string of the users email.
request.user.username will return a method.
Solution 8:[8]
in this way you can check is user is logged in or not If yes for example go to profile if not back to login page
def profile(request):
try:
if request.user.username in User:
return render(request, "profile.html", {'username': request.user.username})
except:
return redirect("/accounts/login")
Solution 9:[9]
For template, you can use
{% firstof request.user.get_full_name request.user.username %}
firstof will return the first one if not null else the second one
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Tyranno Taiwo |
| Solution 2 | |
| Solution 3 | |
| Solution 4 | Samsul Islam |
| Solution 5 | Luan Fonseca |
| Solution 6 | |
| Solution 7 | Dan Walters |
| Solution 8 | web developer |
| Solution 9 | Sehrish Waheed |
