-1

사용자가 내 사이트에 로그인 한 후에 하나 이상의 기능을 실행하려고합니다. 이것이 어떻게 가능한지? 나는 미들웨어를 들여다 보았다. Djangobook은 Django가 처리하는 모든 요청에 ​​대해 코드를 실행하려면이 코드가 필요하다고 말합니다. 그러나 인증이 성공적으로 완료되면 코드를 실행하면됩니다.Django에서 인증 후 코드를 실행하는 방법은 무엇입니까?

참고 : 인증을 위해 Django Allauth을 사용하고 있으며 사용자로 로그인 할 수있는 권한이 없습니다.

답변

1

공식 documentation에 따라 사용자가 로그인 할 때 트리거되는 신호 allauth.account.signals.user_logged_in이 있습니다. 이는 사용자의 목적에 부합 할 수 있습니다.

4

Allauth의 signals을 탭해야합니다. 특히 사용자가

allauth.account.signals.user_logged_in(request, user) 

Sent when a user logs in. 

그래서 프로젝트에 다음과 같은 코드를 추가

신호

로그인.

from django.dispatch.dispatcher import receiver 
from allauth.account.signals import user_logged_in 

@receiver(user_logged_in, dispatch_uid="unique") 
def user_logged_in_(request, user, **kwargs): 
    print request.user 

이 코드는 장고가 시작될 때 읽을 수있는 위치에 있어야합니다. models.py와 views.py는 좋은 후보자입니다.

+0

좀 더 많은 코드를 포함하도록이 답변을 업데이트 할 수 있습니까? 그렇다면'receiver'와'user_logged_in'가 어디에서 가져올 수 있는지 명확히 알 수 있습니다. 어떻게이 함수가 "시작할 때"호출되는지 확인하는 방법은 무엇입니까? 신호에 의심의 여지가있는 * 어딘가에 *,하지만이 답변에 더 많은 사람들이 (자신을 포함) –

+0

@ Mike'Pomax'Kamermans 요청한 변경 사항을 추가하는 데 도움이됩니다 – e4c5