坐了一天。真的无法理解为什么激活用户时没有触发此信号,没有错误日志,激活时管理员没有异常。有人可以帮忙吗?以下代码应该在用户的apache error.log中生成日志消息,对吗?
import logging
from django.dispatch import receiver
from registration.signals import user_activated
@receiver(user_activated)
def registered_callback(sender, **kwargs):
logger = logging.getLogger("user-activated")
logger.error("activated here")
与user_registered
答案 0 :(得分:3)
首先我使用 django 1.8.3 。你应该首先注册你的信号。据我所知,有一些方法可以做到这一点,但这就是我正在做的事情;
在您的应用中创建signals.py
在那里写下您的信号;
from django.db.models.signals import post_save
from django.dispatch import receiver
@receiver(post_save, sender=your_model,dispatch_uid="yourmodel_save_receiver")
def post_save_yourmodel(sender, instance, **kwargs):
if instance.profile_status:
print "active"
else:
print "not active"
然后你应该创建apps.py
。此文件包含模型的配置信息。
from django.apps import AppConfig
class yourmodel_config(AppConfig):
name = 'yourmodel_config'
verbose_name = 'your_model config'
def ready(self):
import yourmodel.signals
只要您的应用程序准备就绪,您的信号就会被导入
最后打开__init__.py
并添加以下内容。
default_app_config = 'yourmodel.apps.yourmodel_config'
通过这个,您可以为您的模型定义应用程序配置。此示例保存yourmodel
时,信号检查profile_status
属性并根据值(true或false)打印输出到控制台。您还可以向模型添加created
参数,以了解是否已创建模型实例。如果创建了新记录,created
将返回True。 def post_save_yourmodel(sender, instance, created, **kwargs):
。否则,只要使用yourmodel.save()
保存模型,就会触发此信号。
考虑这是一个post_save
示例。您可以从here找到模型信号列表。