Код, помещенный в файл settings.py
, может запускаться, когда приложение django, как подсказывает @ salman-arshad, не самый лучший способ сделать это.Это может быть проблематично или даже опасно в зависимости от того, что вы запускаете.
Первая проблема - код будет запускаться дважды при запуске приложения.На самом деле django многократно использует settings.py
файл во время запуска и работы.Просто поместите print('Hello world')
в конец файла settings.py
, и вы увидите, что он напечатан дважды.Это означает, что код запускался дважды.Во-вторых, файл settings.py
не предназначен для запуска произвольного кода.Он предназначен для настроек вашего проекта.В-третьих, если вы попытаетесь импортировать что-либо из приложения в settings.py и использовать его (например, модель), это приведет к ошибкам.Поскольку внутренний реестр приложений django еще не готов.
Так что лучшее место для выполнения этого типа кода - это ready
ловушка класса AppConfig
.В любом приложении django есть файл apps.py
, который определяет класс конфигурации.Вы можете переопределить функцию ready
в ней.Эта функция будет запускаться только один раз при запуске приложения, как это.Допустим, у вас есть приложение с именем app_name
class AppNameConfig(AppConfig):
name = 'app_name'
def ready(self):
pass
# write your startup code here you can import application code here
#from app_name.models import MyModel
, затем поместите следующую строку в файл __init__.py
этого приложения
default_app_config = 'app_name.apps.AppNameConfig'
Теперь этот код будет запускаться при каждом запуске без проблем.