Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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
Django 我对app.py中使用的ready函数感到困惑_Django - Fatal编程技术网

Django 我对app.py中使用的ready函数感到困惑

Django 我对app.py中使用的ready函数感到困惑,django,Django,我正在做一些项目使用django框架,我是一个初学者,刚刚使用 django发出信号,但我不明白为什么我们需要在ready函数中导入app.py中的信号文件 下面的代码使问题更加清楚,我陷入了困境,所以需要帮助 signal.py from django.db.models.signals import post_save from django.contrib.auth.models import User from django.dispatch import receiver from .

我正在做一些项目使用django框架,我是一个初学者,刚刚使用 django发出信号,但我不明白为什么我们需要在ready函数中导入app.py中的信号文件

下面的代码使问题更加清楚,我陷入了困境,所以需要帮助

signal.py

from django.db.models.signals import post_save
from django.contrib.auth.models import User
from django.dispatch import receiver
from .models import Profile

@receiver(post_save,sender=User)
def create_profile(sender,instance,created,**kwargs):
    if created:
        Profile.objects.create(user=instance)


@receiver(post_save,sender=User)
def save_profile(sender,instance,**kwargs):
    instance.profile.save()
app.py

from django.apps import AppConfig

class UsersConfig(AppConfig):
    name = 'users'

    def ready(self):
        import users.signals
        #i have no idea what this function does
这里需要什么就绪功能?为什么要在这里导入信号

如果我在顶部导入信号而不使用就绪功能会怎么样

这里需要什么
ready
功能?为什么要在这里导入信号

在注册表完全加载后调用。因此,您可以在服务器开始处理请求之前执行一些您想要执行的操作。文件中对此进行了规定:

子类可以重写此方法以执行初始化任务,例如注册信号。一旦注册表完全填充,就会调用它

这里导入信号的原因是,如果不显式导入信号,Django将不会导入这些信号。如果未导入
信号
模块,则信号不会在相应的型号上注册,因此,例如,如果您对
用户
型号进行更改,则不会触发信号

通常会在导入行中添加注释,以防止像
pylint
这样的linter工具对您不使用的导入发出警告

from django.apps import AppConfig

class UsersConfig(AppConfig):
    name = 'users'

    def ready(self):
        import users.signals  # noqa
从django.apps导入AppConfig
类UsersConfig(AppConfig):
名称='用户'
def就绪(自我):
导入users.signals#noqa