suh*_*kan 3 python django django-rest-framework
我正在使用django默认接收器来处理信号.但它不起作用.我已经在APP1中修改了用户模型,当新的用户对象在APP2中创建一个接收器时,signal.py正在收听它,但它无法正常工作.
class User(BaseModel, AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(
        verbose_name='email address',
        max_length=255,
        unique=True,
    )
    username = models.CharField(max_length=40, unique=True)
    first_name = models.CharField(max_length=30, blank=True, null=True)
    last_name = models.CharField(max_length=30, blank=True, null=True)
    is_active = models.BooleanField(default=True)
    is_admin = models.BooleanField(default=False)
    is_staff = models.BooleanField(default=False)
    is_email_verified = models.BooleanField(default=False)
    is_paid = models.IntegerField(default=0)
    access_token = models.CharField(max_length=128, blank=True) 
    objects = UserManager() 
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['username']  
    class Meta:
        db_table = 'users'  
    def __str__(self):
        return self.email
Run Code Online (Sandbox Code Playgroud)
from django.conf import settings
from django.db.models.signals import post_save
from django.dispatch import receiver
from accounts.models import User    
@receiver(post_save, sender=User)#settings.AUTH_USER_MODEL)
def create_auth_token(sender, instance=None, created=False, **kwargs):
    print ("token generated")
    if created:
       print("data at signal ****", instance.email, instance)
Run Code Online (Sandbox Code Playgroud)
    suh*_*kan 12
最后,我得到了答案.因为我没有在启动时导入signal.py.
from __future__ import unicode_literals
from django.apps import AppConfig
    class StreamsConfig(AppConfig):
        name = 'streams'    
        def ready(self):
            print("at ready")
            import streams.signals
Run Code Online (Sandbox Code Playgroud)
default_app_config = 'streams.apps.StreamsConfig'
Run Code Online (Sandbox Code Playgroud)
在这个改变之后我收到了信号
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           3341 次  |  
        
|   最近记录:  |