Приложение Django initalization код (как соединение с сигналами)

Мне нужно место для выполнения кода инициализации, который специализирован (как соединение с сигналами). Когда я поместил код в __init__.py модуль приложения я закончил с круговым импортом моделей.

Существует ли способ запустить функцию, когда платформа является установкой и прежде чем какой-либо запрос будет выполнен?

Я использую довольно старую версию django 96.6, но я также интересуюсь решениями для текущей версии.

Относительно дублирования других вопросов: Вот то, как вопрос отличается от дубликатов, предложенных S.Lott в комментариях:

Комментарии к текущим решениям: Я не могу использовать URL, поскольку большинство моих приложений не имеет никаких URL выставленными. Они просто слушают сигналы и хранят дополнительную информацию в базе данных.

8
задан Community 23 May 2017 в 10:24
поделиться

3 ответа

Сигналы, в частности, рекомендуются поставить в Models.py вашего приложения.

Попробуйте Models.py или URLS.PY и дайте нам знать, если у вас повезет.

5
ответ дан 5 December 2019 в 14:03
поделиться

Да, конечно, есть. Это часть пространства имен Microsoft.StartBasic...

Microsoft.VisualBasic.MonthName

И для тех из вас, кто имеет проблемы с этим пространством имен, вы должны понимать, что это действительно .NET, и это никуда не денется .

Для записи функция MonthName вызывает:

Thread.CurrentThread.CurrentCulture.DateTimeFormat.GetMonthName
-121--759045-

Та же проблема, перезапуск apache устранил проблему.

-121--1314699-

Лучшее место для таких вещей... в любом месте, просто импортируйте его в файл urls.py (по понятным причинам urls загружаются перед любыми запросами).

5
ответ дан 5 December 2019 в 14:03
поделиться

Если вы не предоставите URL-адреса, то вам действительно нужно поставить его в Models.py , это просто так, как оно есть.

Теперь, на ваших проблемах: вы хотите определить его в собственном модуле, отлично, сделайте это. Чтобы избежать кругового импорта, используйте django.db.models.get_model , чтобы динамически вернуть модель для вас. Вы можете предоставить функцию инициализации для вашего модуля сигналов для импорта соответствующей модели и подключить соответствующие сигналы. Эта функция будет вызвана в конце Models.py , проводится только один раз, и после инициализации вашей модели.

Есть еще шанс, что это не будет работать (если модели еще не готовы, когда вы его настроете), но дайте ему попробовать и дайте нам знать.

2
ответ дан 5 December 2019 в 14:03
поделиться
Другие вопросы по тегам:

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