Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用户登录时Django postsave信号缺少参数_Python_Django - Fatal编程技术网

Python 用户登录时Django postsave信号缺少参数

Python 用户登录时Django postsave信号缺少参数,python,django,Python,Django,这是我的信号: def deactivate_users_by_default(sender, user, created, **kwargs): print sender, user, created if created: user.is_active = False user.save() signals.post_save.connect(deactivate_users_by_default, sender=User, dispatch_

这是我的信号:

def deactivate_users_by_default(sender, user, created, **kwargs):
    print sender, user, created
    if created:
        user.is_active = False
        user.save()
signals.post_save.connect(deactivate_users_by_default, sender=User, dispatch_uid="deactivate_users_by_default")
当我通过管理面板或auth.login视图登录时,我得到以下信息:

 response = receiver(signal=self, sender=sender, **named)
TypeError: deactivate_users_by_default() takes exactly 3 arguments (2 given)
我做错了什么?

它有点隐藏,但只有
发送方
作为位置参数传递给信号接收方。所有其他参数(包括模型信号的
实例
参数)都作为关键字args传递:

请注意,该函数接受一个sender参数以及通配符关键字参数(
**kwargs
);所有信号处理程序都必须接受这些参数

这里的隐式断言是,信号处理程序的所有非发送方参数都作为关键字参数传递

user
与提供给的任何关键字都不匹配,并且接收方没有传递与之匹配的位置参数,因此出现错误消息

默认情况下重新声明
停用用户\u

def deactivate_users_by_default(sender, instance, created, **kwargs):

修复您的问题。

仅查看错误消息:
用户
作为
实例
仅关键字参数传递(在
**命名
中)。将
用户
重命名为
实例
应该可以解决您的问题。@dhke-ahh在这种情况下参数名很重要吗?谢谢,看来是这样的