2012-09-27 98 views
61

如何獲取當前登錄用戶的ID?如何在Django中獲取當前登錄用戶的用戶ID?

models.py

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

views.py

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

的可能的複製[在Django中,我怎麼知道當前登錄的用戶?](http://stackoverflow.com/questions/1477319/in-django-how-do-i-know-在-當前登錄的美呃) –

回答

108

首先要確保你有SessionMiddlewareAuthenticationMiddleware中間件添加到您的MIDDLEWARE_CLASSES設置。

目前userrequest對象,你可以得到它:

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

request.user會給你代表當前登錄的用戶User對象。如果用戶當前未登錄,request.user將被設置爲AnonymousUser的實例。你可以告訴他們除了與is_authenticated(),就像這樣:

if request.user.is_authenticated(): 
    # Do something for authenticated users. 
else: 
    # Do something for anonymous users. 
+0

參考:https://docs.djangoproject.com/en/1.7/topics/auth/default/#authentication-in-web-requests – aliteralmind

+1

如果我們要設置外鍵userid到一個模型當前登錄用戶的ID? –

+0

您不再需要更新設置。 https://docs.djangoproject.com/en/1.11/topics/auth/default/#authentication-in-web-requests –

5

假設你指的是Django的Auth User,在您看來:

def game(request): 
    user = request.user 

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

您可以訪問當前使用下面的代碼登錄的用戶:

request.user.id 
相關問題