gpt4 book ai didi

python - Django 信号未接收/工作

转载 作者:太空宇宙 更新时间:2023-11-03 12:30:58 26 4
gpt4 key购买 nike

我正在使用 Django 默认接收器来处理信号。但它不工作。每当新的用户对象在 APP2 signal.py 中创建一个接收器时,我就修改了 APP1 中的用户模型,但它不起作用。

app1/模型.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

app2/signals.py

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)

最佳答案

我终于得到了答案。这是因为我没有在启动时导入 signals.py

工作代码

应用程序.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

初始化.py
default_app_config = 'streams.apps.StreamsConfig'

此更改后我收到信号

更新:

根据更新应用程序的 django 3.0 文档,如果您使用应用程序配置的点路径,则不需要在 init.py 中添加 default_app_config。 https://docs.djangoproject.com/en/3.0/ref/applications/#django.apps.AppConfig.ready

只是替换

INSTALLED_APPS = (
...,
'streams',
)

INSTALLED_APPS = (
...,
'streams.apps.StreamsConfig',
)

它会起作用。

关于python - Django 信号未接收/工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45859465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com