2014-03-25 3 views
0

나는 code의 스 니펫을 Django documentation:log in에 넣었습니다. 아래에 다른 버전이 있는데, 위와 다른 점이 있는지 알고 싶습니다.사용자 인증?

수표가 request.user 인 경우 수행합니다. userauthenticated/logged 인 경우에만 request에 붙습니다. documentation에서

는 :

from django.contrib.auth import authenticate, login 

def my_view(request): 
    username = request.POST['username'] 
    password = request.POST['password'] 
    user = authenticate(username=username, password=password) 
    if user is not None: 
     if user.is_active: 
      login(request, user) 
      # Redirect to a success page. 
     else: 
      # Return a 'disabled account' error message 
    else: 
     # Return an 'invalid login' error message. 

my version:

from django.contrib.auth import authenticate, login 

    def my_view(request): 
     if request.user: 
     if user.is_active: 
      login(request, user) 
      # Redirect to a success page. 
     else: 
      # Return a 'disabled account' error message 
    else: 
     # Return an 'invalid login' error message. 
+2

사용자가 로그인하지 않은 경우 request.user는'AnonymousUser'입니다. 버전에서 사용자 이름/비밀번호가 틀리면 사용자를 인증하지 않습니다. 'request.user.is_authenticated()'를 사용하여 사용자가 로그인했는지 확인할 수 있습니다. – karthikr

답변

0

두 버전 사이에 큰 차이가있다. docs에서

,
If the current user has not logged in, this attribute will be set to an 
instance of AnonymousUser, otherwise it will be an instance of User. 

그래서 당신이 원하는 것 :

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