k44
k44

Reputation: 1915

How to get the currently logged in user's id in Django?

How to get the currently logged-in user's id?

In models.py:

class Game(models.model):
    name = models.CharField(max_length=255)
    owner = models.ForeignKey(User, related_name='game_user', verbose_name='Owner')

In views.py:

gta = Game.objects.create(name="gta", owner=?)

Upvotes: 187

Views: 360438

Answers (7)

You can use HttpRequest.user and get_user(request) to get the id of the logged-in user in Django Views as shown below:

# "views.py"

from django.shortcuts import render
from django.contrib.auth import get_user # Here

def test(request):
    print(request.user.id) # 32
    print(get_user(request).id) # 32
    return render(request, 'index.html')

And, you can get the id of the logged-in user in Django Templates as shown below:

{% "index.html" %}

{{ user.id }} {% 32 %}

Upvotes: 0

Mujeeb Ishaque
Mujeeb Ishaque

Reputation: 2731

FROM WITHIN THE TEMPLATES

This is how I usually get current logged in user and their id in my templates.

<p>Your Username is : {{user}} </p>
<p>Your User Id is  : {{user.id}} </p>

Upvotes: 2

Muhammad Sameer
Muhammad Sameer

Reputation: 51

Just go on your profile.html template and add a HTML tag named paragraph there,

<p>User-ID: {% user.id %}</p>

Upvotes: 0

Tinashe Mphisa
Tinashe Mphisa

Reputation: 35

This is how I usually get current logged in user and their id in my templates.

<p>Your Username is : {{user|default: Unknown}} </p>
<p>Your User Id is  : {{user.id|default: Unknown}} </p>

Upvotes: 0

K Z
K Z

Reputation: 30483

First make sure you have SessionMiddleware and AuthenticationMiddleware middlewares added to your MIDDLEWARE_CLASSES setting.

The current user is in request object, you can get it by:

def sample_view(request):
    current_user = request.user
    print current_user.id

request.user will give you a User object representing the currently logged-in user. If a user isn't currently logged in, request.user will be set to an instance of AnonymousUser. You can tell them apart with the field is_authenticated, like so:

if request.user.is_authenticated:
    # Do something for authenticated users.
else:
    # Do something for anonymous users.

Upvotes: 317

sriram veeraghanta
sriram veeraghanta

Reputation: 409

You can access Current logged in user by using the following code:

request.user.id

Upvotes: 31

Neil
Neil

Reputation: 7202

Assuming you are referring to Django's Auth User, in your view:

def game(request):
  user = request.user

  gta = Game.objects.create(name="gta", owner=user)

Upvotes: 8

Related Questions