2011-01-09 30 views
35
def index(request): 
    the_user = request.user 

Trong Django, làm cách nào để biết liệu đó có phải là người dùng thực sự hay không? Tôi đã thử:Làm cách nào để kiểm tra xem người dùng này có ẩn danh hay thực sự là người dùng trên hệ thống của tôi không?

if the_user: nhưng "AnonymousUser" ở đó ngay cả khi không có ai đăng nhập. Vì vậy, nó luôn trả về true và điều này không hiệu quả.

Trả lời

62

Bạn có thể kiểm tra xem request.user.is_anonymous có trả lại True hay không.

+10

Hãy nhận biết rằng trong 'views.py' bạn nên sử dụng' request.user.is_anonymous() 'vì nó là một hàm, trong khi trong các mẫu bạn nên sử dụng' {{user.is_anonymous}} ' – amigcamel

+8

Có vẻ như trong Django 1.9 nó là' is_authenticated() ': hãy xem https://docs.djangoproject.com/en/ 1.9/topic/auth/default/# authentication-in-web-yêu cầu –

+2

từ Django 1.10, is_anonymous không còn là phương thức (chỉ là tài sản) – maxbellec

12

Một lựa chọn cho

if user.is_anonymous(): 
    # user is anon user 

là bằng cách kiểm tra để xem những gì các id của đối tượng người dùng là:

if user.id == None: 
    # user is anon user 
else: 
    # user is a real user 

thấy https://docs.djangoproject.com/en/dev/ref/contrib/auth/#anonymous-users

+2

có vẻ là một ý tưởng tồi. user.is_anonymous() sẽ tiếp tục làm việc trong các phiên bản mới, user.id có thể không, tùy thuộc vào việc triển khai trong tương lai – maxbellec

3

Tôi biết tôi đang làm một chút đào mộ ở đây, nhưng tìm kiếm trên Google đã đưa tôi đến trang này.

Nếu xem def của bạn yêu cầu mà người dùng đang đăng nhập, bạn có thể thực hiện trang trí @login_required:

from django.contrib.auth.decorators import login_required 

@login_required 
def my_view(request): 
    … 
Các vấn đề liên quan