2012-09-27 37 views
61

Làm cách nào để nhận id người dùng hiện đã đăng nhập?Cách nhận id người dùng hiện đang đăng nhập của người dùng ở Django?

trong models.py:

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

trong views.py:

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

có thể trùng lặp của [trong Django, làm thế nào để tôi biết hiện đang đăng nhập trong sử dụng?] (http://stackoverflow.com/questions/1477319/in-django-how-do-i-know- hiện đang đăng nhập-chúng tôi er) –

Trả lời

108

Trước tiên hãy chắc chắn rằng bạn có SessionMiddlewareAuthenticationMiddleware middlewares thêm vào thiết lập MIDDLEWARE_CLASSES của bạn.

hiện nay user là trong request đối tượng, bạn có thể nhận được nó bằng cách:

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

request.user sẽ cung cấp cho bạn một đối tượng User đại diện cho hiện đăng nhập người dùng. Nếu người dùng hiện không đăng nhập, request.user sẽ được đặt thành phiên bản AnonymousUser. Bạn có thể nói với họ ngoài với is_authenticated(), như vậy:

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

Tham khảo: https://docs.djangoproject.com/en/1.7/topics/auth/default/#authentication-in-web-requests – aliteralmind

+1

Điều gì sẽ xảy ra nếu chúng ta muốn đặt userid khóa ngoài thành mô hình là hiện đang đăng nhập id của người dùng? –

+0

Bạn không cần phải cập nhật cài đặt nữa. https://docs.djangoproject.com/en/1.11/topics/auth/default/#authentication-in-web-requests –

5

Giả sử bạn đang đề cập đến Django Auth User, theo quan điểm của bạn:

def game(request): 
    user = request.user 

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

Bạn có thể truy cập hiện tại người dùng đăng nhập bằng cách sử dụng đoạn mã sau:

request.user.id 
Các vấn đề liên quan