Где обработчики сигналов должны жить в django проекте?

Я только что начал реализовывать слушателей сигнала в django проекте. В то время как я понимаю то, что они и как использовать их. Мне нелегко выяснять, куда я должен поместить их. Документация от django сайта говорит следующее:

Где это должно кодировать живой?

Можно поместить код обработки и регистрации сигнала где угодно, Вам нравится. Однако необходимо будет удостовериться, что модуль, в котором это находится, импортируется вначале так, чтобы обработка сигнала была зарегистрирована, прежде чем любые сигналы должны быть отправлены. Это делает models.py Вашего приложения хорошим местом для помещения регистрации обработчиков сигналов.

В то время как это - хорошее предложение, имея не, образцовые классы или методы в моем models.py просто протирают меня неправильный путь.

Таким образом, какова лучшая практика / правило для того, чтобы сохранить и зарегистрировать обработчики сигналов?

135
задан Jason Webb 27 April 2010 в 05:56
поделиться

2 ответа

Мне действительно нравится делать их методами классов самой модели. Это сохраняет все в рамках одного класса и означает, что вам не нужно беспокоиться об импорте чего-либо.

39
ответ дан 23 November 2019 в 23:44
поделиться

Я недавно прочитал эту статью о передовых методах размещения ваших проектов / приложений, и в ней предлагается, чтобы все ваши настраиваемые сигналы диспетчера помещались в файл с именем signal.py . Однако это не решает полностью вашу проблему, поскольку вам все равно нужно куда-то их импортировать, и чем раньше они будут импортированы, тем лучше.

Модель хорошая. Поскольку вы уже определили все в своем файле signal.py , он не должен занимать больше строки в верхней части файла. Это похоже на то, как выложен файл admin.py (с определениями классов вверху и кодом для регистрации всех настраиваемых классов администратора внизу), если вы определяете свои сигналы, затем подключаете их в том же файле.

Надеюсь, это поможет! В конечном итоге все сводится к тому, что вы предпочитаете.

13
ответ дан 23 November 2019 в 23:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: