当用户登录时,我需要编写一个 DB 行。以下代码在 models.py 中(在文件末尾,在模型定义之后);
模型.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 中调用了以下代码;
实用程序.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.Model。
有人知道我错过了什么吗?
我尝试在 models.py 的回调函数中写入一个简单的文件,并在 u_audit() 函数中尝试了同样的事情。相反,它工作正常,所以我知道它被正确调用了。我已经注册了其他信号回调函数(所有登录后),它们正在使用模型并且工作正常。