我无法理解此代码
from django.apps import AppConfig
class UsersConfig(AppConfig):
name = 'users'
def ready(self):
import users.signals
某些信号已导入就绪函数,但是ready(self)
函数在这里做什么?并且其中声明的name
变量是内置关键字吗?我研究了文档,但我什么都没掌握。请解释一下
子类可以重写此方法以执行初始化任务 例如注册信号。一旦注册表被调用 完全填充。
尽管您无法在AppConfig的模块级别导入模型 定义了类,您可以使用 导入语句或get_model()。
,请简单说明。谢谢
答案 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
函数可以获取它们。
希望它能使您头脑清醒。