Мне нужно место для выполнения кода инициализации, который специализирован (как соединение с сигналами). Когда я поместил код в __init__.py
модуль приложения я закончил с круговым импортом моделей.
Существует ли способ запустить функцию, когда платформа является установкой и прежде чем какой-либо запрос будет выполнен?
Я использую довольно старую версию django 96.6, но я также интересуюсь решениями для текущей версии.
Относительно дублирования других вопросов: Вот то, как вопрос отличается от дубликатов, предложенных S.Lott в комментариях:
Корректное место для помещения дополнительного кода запуска в django? Django должен быть полностью инициализирован, когда функция, работал. Таким образом, код в manage.py не будет работать.
Куда я должен поместить одноразовую операционную операцию в платформу Django? Функция инициализирует соединение между моими приложениями. Таким образом, код должен быть, работал в каждом потоке, который на самом деле обработает запросы.
Комментарии к текущим решениям: Я не могу использовать URL, поскольку большинство моих приложений не имеет никаких URL выставленными. Они просто слушают сигналы и хранят дополнительную информацию в базе данных.
Сигналы, в частности, рекомендуются поставить в Models.py вашего приложения.
Попробуйте Models.py или URLS.PY и дайте нам знать, если у вас повезет.
Да, конечно, есть. Это часть пространства имен Microsoft.StartBasic...
Microsoft.VisualBasic.MonthName
И для тех из вас, кто имеет проблемы с этим пространством имен, вы должны понимать, что это действительно .NET, и это никуда не денется .
Для записи функция MonthName
вызывает:
Thread.CurrentThread.CurrentCulture.DateTimeFormat.GetMonthName
-121--759045- Та же проблема, перезапуск apache устранил проблему.
-121--1314699-Лучшее место для таких вещей... в любом месте, просто импортируйте его в файл urls.py (по понятным причинам urls загружаются перед любыми запросами).
Если вы не предоставите URL-адреса, то вам действительно нужно поставить его в Models.py
, это просто так, как оно есть.
Теперь, на ваших проблемах: вы хотите определить его в собственном модуле, отлично, сделайте это. Чтобы избежать кругового импорта, используйте django.db.models.get_model
, чтобы динамически вернуть модель для вас. Вы можете предоставить функцию инициализации для вашего модуля сигналов для импорта соответствующей модели и подключить соответствующие сигналы. Эта функция будет вызвана в конце Models.py
, проводится только один раз, и после инициализации вашей модели.
Есть еще шанс, что это не будет работать (если модели еще не готовы, когда вы его настроете), но дайте ему попробовать и дайте нам знать.