2012-09-18 5 views
3

Django를 처음 사용하고 사용자가 로그인 한 시간과 사용자가 로그 아웃 한 시간을 등록하는 블로그를 작성하려고합니다.Django가 데이터베이스에 게시하는 시간

나는 이것이 전망에 들어갈 것이라고 생각하지만 문제에 접근하는 방법에 대한 단서가 없습니다.

사용자가 데이터베이스에 로그인 한 시간을 보내려면 어떻게해야합니까?

모든 힌트와 안내를 부탁드립니다.

답변

4

당신은 장고에 내장 된 인증을 사용하는 가정 사용자의 마지막 로그인 시간을 얻을 수 auth.model.User.last_login을 사용할 수 있습니다 : 당신이 User 테이블보다는 다른 곳에서 다른 데이터를 저장하려면,

user = User.objects.get(username='johndoe') 
last_login = user.last_login 

당신을 이 last_login을 원하는 테이블에 간단하게 삽입 할 수 있습니다. 그렇지 않으면 이미 models.User입니다. 기록으로

로그 아웃, 당신은 당신의 logout 보려면 다음보기를 사용할 수 있습니다

from django.contrib.auth import logout 
from django.utils import timezone 

def logout_view(request): 
    logout(request) 
    logout_time = timezone.now() 
    # Now save your logout_time to the table you want 
    # Redirect to a success page. 

을 양자 택일로, 당신은 마지막으로 로그 아웃 시간을 각각 기록하기 위해 (1.3 이상 장고에서 사용 가능) 장고의 user_logged_out 신호를 이용할 수있다 시간은 사용자가 로그 아웃 : 당신은 당신의 models.py 파일의 맨 아래에이를 넣을 수 있습니다

from django.contrib.auth.signals import user_logged_out 

def update_last_logout(sender, user, **kwargs): 
    """ 
    A signal receiver which updates the last_logout date for 
    the user logging out. 
    """ 
    user.last_logout = timezone.now() 
    user.save(update_fields=['last_logout']) 
user_logged_out.connect(update_last_logout) 

. 위의 솔루션은 User 모델을 확장하여 last_logout 필드를 포함한다고 가정합니다. 그 일을 어떻게 수행할지 확실하지 않으면 여기에서 시작할 수 있습니다 : Django Tip 5: Extending contrib.auth.models.User.

실제로 두 번째 방법은 Django가 User : models.py에 대해 last_login을 정확히 업데이트하는 방법입니다.


참조 :

  1. Official Django doc on last_login
  2. Extending contrib.auth.models.User
관련 문제