사용자가 로그인 할 때 DB 행을 작성해야합니다. 다음 코드는 models.py에 있습니다 (파일 끝, 모델 정의 후);Django에서 user_logged_in 신호에 등록 된 콜백 함수의 모델을 참조 할 수 없습니다.
models.py
from django.contrib.auth.signals import user_logged_in
from utils import *
def rec_login(sender, request, user, **kwargs):
u_audit('some text here', user)
user_logged_in.connect(rec_login)
는 modules.py에서 수입되는 유틸리티 모듈이있다. 다음 코드는 위의 함수에서 utils.py에 호출됩니다.
utils.py
from app.models import *
def u_audit(msg,u):
ua=UserLog(action=msg, user=u, actiontime=datetime.now())
ua.save()
나는 여러 다른 장소 (후 로그인)에서 u_audit() 함수를 재사용하고 있습니다.
사용자가 로그인하면 UserLog 객체에 대한 NameError가 발생합니다 (즉, 모델 정의가 신호 콜백 함수로 액세스 할 수없는 것처럼 보입니다).
위에서 언급 한 UserLog 개체는 단순한 모델입니다. 모델.
누구나 내가 아는 바를 알고 계신가요?
나는 models.py의 콜백 함수에 간단한 파일 쓰기를 시도하고 u_audit() 함수에서 같은 것을 시도했다. 대신 제대로 작동하므로 제대로 호출되고 있음을 알고 있습니다. 나는 다른 시그널 콜백 함수를 등록했다. (모든 포스트 - 로그인) 모델을 사용하고 잘 작동한다.
utils.py에서''UserLog''를 가져 왔습니까? –
예 - 모델입니다. ** app.models에서 ** 모델에 포함 된 모델 ** –