Я только что начал реализовывать слушателей сигнала в django проекте. В то время как я понимаю то, что они и как использовать их. Мне нелегко выяснять, куда я должен поместить их. Документация от django сайта говорит следующее:
Где это должно кодировать живой?
Можно поместить код обработки и регистрации сигнала где угодно, Вам нравится. Однако необходимо будет удостовериться, что модуль, в котором это находится, импортируется вначале так, чтобы обработка сигнала была зарегистрирована, прежде чем любые сигналы должны быть отправлены. Это делает models.py Вашего приложения хорошим местом для помещения регистрации обработчиков сигналов.
В то время как это - хорошее предложение, имея не, образцовые классы или методы в моем models.py просто протирают меня неправильный путь.
Таким образом, какова лучшая практика / правило для того, чтобы сохранить и зарегистрировать обработчики сигналов?
Мне действительно нравится делать их методами классов самой модели. Это сохраняет все в рамках одного класса и означает, что вам не нужно беспокоиться об импорте чего-либо.
Я недавно прочитал эту статью о передовых методах размещения ваших проектов / приложений, и в ней предлагается, чтобы все ваши настраиваемые сигналы диспетчера помещались в файл с именем signal.py
. Однако это не решает полностью вашу проблему, поскольку вам все равно нужно куда-то их импортировать, и чем раньше они будут импортированы, тем лучше.
Модель хорошая. Поскольку вы уже определили все в своем файле signal.py
, он не должен занимать больше строки в верхней части файла. Это похоже на то, как выложен файл admin.py
(с определениями классов вверху и кодом для регистрации всех настраиваемых классов администратора внизу), если вы определяете свои сигналы, затем подключаете их в том же файле.
Надеюсь, это поможет! В конечном итоге все сводится к тому, что вы предпочитаете.