How can I get the username of the logged-in user in Django?

PythonDjangoDjango ModelsDjango ViewsDjango Templates

Python Problem Overview


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.

Python Solutions


Solution 1 - Python

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 - Python

request.user.get_username() or request.user.username, former is preferred.

Django docs say:

> 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 - Python

'request.user' has the logged in user.
'request.user.username' will return username of logged in user.

Solution 4 - Python

For classed based views use self.request.user.id

Solution 5 - Python

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 - Python

You can use this to get the logged-in user's username :-

Just write this in template.

{{ request.user.username }}

Solution 7 - Python

request.user.get_username() will return a string of the users email.

request.user.username will return a method.

Solution 8 - Python

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 - Python

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionCris TowiView Question on Stackoverflow
Solution 1 - PythonkarthikrView Answer on Stackoverflow
Solution 2 - PythonuserView Answer on Stackoverflow
Solution 3 - PythonanchoView Answer on Stackoverflow
Solution 4 - PythonZongoBoyXView Answer on Stackoverflow
Solution 5 - PythonLuan FonsecaView Answer on Stackoverflow
Solution 6 - PythonLarsView Answer on Stackoverflow
Solution 7 - PythonDan WaltersView Answer on Stackoverflow
Solution 8 - Pythonweb developerView Answer on Stackoverflow
Solution 9 - PythonSehrish WaheedView Answer on Stackoverflow