为什么django代码剪辑在模型文件中运行?

时间:2015-05-08 18:11:09

标签: python django model-view-controller

在django.contrib.auth.models.py中,有一个函数,其下面有一行,从20开始

def update_last_login(sender, user, **kwargs):
    """
    A signal receiver which updates the last_login date for
    the user logging in.
    """
    user.last_login = timezone.now()
    user.save()
user_logged_in.connect(update_last_login)

这最后一行对我来说很奇怪,因为它在定义之后立即调用了一个函数。我从来没有考虑过调用一个类似于脚本的models.py文件,我认为django模型只不过是定义......这个user_logged_in行什么时候被调用?在任何模型文件的导入,或什么?如果它只在用户登录时被调用,那么django如何知道只调用它呢?感谢

1 个答案:

答案 0 :(得分:3)

不,那不是调用update_last_login函数;它将它连接到一个信号。

所有Python文件都是可执行的;偶数函数和类定义是可执行代码。

首先导入模块级别的所有内容 - 包括函数定义