Приложения Django - это просто пакеты Python, которые взаимодействуют с фреймворком django. Но в какой-то момент django должен вести учет этих пакетов. Например, для создания миграций.
Чтобы вести учет приложений, django ведет реестр приложений для себя и ведет записи, используя экземпляры классов, унаследованных от AppConfig
(того, который вы разместили в своем коде).
Функция готовности
Как указано в документации,
Он вызывается, как только реестр полностью заполнен.
Я объяснил выше, о каком реестре идет речь.
Некоторые сигналы импортируются в функции готовности, но то, что готово (самостоятельно)
Функция здесь?
Поскольку функция ready вызывается, как только реестр готов,
def ready(self):
import users.signals
означает, что файл users.signals
файл будет импортирован одновременно, и определенно код внутри него будет выполнен и зарегистрирует наш сигнал.
Теперь имеет смысл, что мы можем использовать функцию ready для выполнения некоторого кода, который должен быть выполнен сразу после запуска приложения (например, регистрация сигналов).
Хотя вы не можете импортировать модели на уровне модуля, где AppConfig
классы определены, вы можете импортировать их в ready (), используя либо
оператор import или get_model ().
означает, что мы не можем импортировать модели из этого приложения в apps.py
так, как мы их импортируем.
from users.models import SOME_MODEL
мы не можем этого сделать. Но если нам нужен доступ к некоторой модели в функции ready, класс AppConfig
имеет функцию get_model
для их получения.
Надеюсь, это очистит ваш разум.