UsersConfig()函数中的ready()函数是什么?

时间:2019-03-16 16:51:36

标签: python django

我无法理解此代码

from django.apps import AppConfig


class UsersConfig(AppConfig):
    name = 'users'

    def ready(self):
        import users.signals

某些信号已导入就绪函数,但是ready(self)函数在这里做什么?并且其中声明的name变量是内置关键字吗?我研究了文档,但我什么都没掌握。请解释一下

的含义
  

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

     

尽管您无法在AppConfig的模块级别导入模型   定义了类,您可以使用   导入语句或get_model()。

,请简单说明。谢谢

1 个答案:

答案 0 :(得分:0)

Django应用程序仅仅是与django框架交互的python软件包。但是在某些时候,django需要保留这些软件包的记录。例如,用于创建迁移。

要保留应用程序记录,django在内部维护一个应用程序注册表,并使用从setDT(df) x = melt(df[,-1])[, tname := sub('_.+','',variable)][, wave := sub('.+_','',variable)] x[wave != 'wave1', .(p.value = t.test(x[tname==test & wave == 'wave1', value], value, paired = TRUE)$p.value), by = .(test=tname,wave)] # test wave p.value # 1: testA wave2 0.6642769 # 2: testA wave3 0.9209554 # 3: testB wave2 0.1456059 # 4: testB wave3 0.4184603 (您在代码中发布的类)继承的类的实例维护记录。

就绪功能

文档说明

  

注册表完全填充后即被调用。

我上面已经解释了他们在谈论什么注册表。

  

某些信号已导入ready函数中,但准备就绪(自己)   功能在这里做什么?

因为一旦注册表准备就绪,就会调用ready函数,

AppConfig

意味着文件def ready(self): import users.signals 文件将被同时导入,并且其中的代码肯定会被执行并注册我们的信号。

现在我们可以使用ready函数来执行一些需要在应用程序启动后立即执行的代码(就像注册信号一样),这很有意义。

  

尽管您无法在AppConfig的模块级别导入模型   定义了类,您可以使用   导入语句或get_model()。

意味着我们无法以users.signals的方式从此应用程序导入模型。

apps.py

我们不能那样做。但是,如果我们需要在ready函数中访问某些模型,则from users.models import SOME_MODEL 类具有AppConfig函数可以获取它们。

希望它能使您头脑清醒。