Search code examples
pythondjangodjango-modelsdjango-authenticationuserid

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=?)

Solution

  • 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.