Как выполнить код автоматически после manage.py runserver - PullRequest
0 голосов
/ 01 мая 2019

Мне нужно прочитать CSV-файл сразу после запуска сервера. Это не может быть сделано в любом представлении, потому что это должно быть предварительной загрузкой для выполнения всех представлений, поэтому мне нужно сделать это сразу после "manage.py runserver". Есть ли файл, где я могу написать код, который мне нужно выполнить в первую очередь?

Ответы [ 2 ]

3 голосов
/ 01 мая 2019

Код, помещенный в файл 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'

Теперь этот код будет запускаться при каждом запуске без проблем.

0 голосов
/ 01 мая 2019

Просто добавьте этот скрипт в settings.py файл. Потому что файл settings.py из тех файлов, которые исполняются до файла views.py

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...