如何在Django中获取当前登录用户的用户ID?

k44*_*k44 111 django django-models django-authentication

如何获取当前登录用户的ID?

models.py:

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

views.py:

gta = Game.objects.create(name="gta", owner=?)
Run Code Online (Sandbox Code Playgroud)

K Z*_*K Z 179

首先要确保你有SessionMiddlewareAuthenticationMiddleware中间件添加到您的MIDDLEWARE_CLASSES设置.

当前userrequest对象,您可以通过以下方式获取:

def sample_view(request):
    current_user = request.user
    print current_user.id
Run Code Online (Sandbox Code Playgroud)

request.user将为您提供一个User表示当前登录用户的对象.如果用户当前未登录,request.user则将设置为实例AnonymousUser.您可以将它们区分开来is_authenticated,如下所示:

if request.user.is_authenticated:
    # Do something for authenticated users.
else:
    # Do something for anonymous users.
Run Code Online (Sandbox Code Playgroud)

  • 如果我们要将外键userid设置为当前登录用户ID的模型,该怎么办? (3认同)
  • 请求来自哪里? (2认同)

小智 18

您可以使用以下代码访问当前登录用户:

request.user.id
Run Code Online (Sandbox Code Playgroud)


Nei*_*eil 7

假设您在您的视图中指的是Django的Auth用户:

def game(request):
  user = request.user

  gta = Game.objects.create(name="gta", owner=user)
Run Code Online (Sandbox Code Playgroud)