Как выполнить внешний скрипт в среде Django

Я пытаюсь выполнить внешний фрагмент кода для отладки и терминальных целей в среде, которую использует консоль Django, чтобы она могла подключаться к БД и т. Д.

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

Ответ сказал, что вы можете сделать это, выполнив python manage.py shell < snippet.py но я не увидел успешного результата. И хотя об ошибках не сообщается, я не получаю исключенный вывод, а только серию >>> подсказки.

Так как я могу это сделать?

Кстати, я использую PyCharm, на случай, если у этой IDE есть краткий способ сделать это или любой другой специальный инструмент.

3 ответа

Я бы сказал, что создание новой команды управления Custom - лучший способ достичь этой цели.

Но вы можете запустить свой скрипт в среде django. Я использую это иногда для запуска одноразового скрипта или некоторых простых тестов.

Вы должны установить переменную среды DJANGO_SETTINGS_MODULE в ваш модуль настроек, а затем вам нужно позвонить django.setup()

Я скопировал эти строки из manage.py скрипт, вы должны установить правильные настройки модуля!

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings.local")
django.setup()

Вот простой шаблонный скрипт, который я иногда использую:

# -*- coding: utf-8 -*-
import os
import django

#  you have to set the correct path to you settings module
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings.local")
django.setup()


from project.apps.bla.models import MyModel


def run():
    # do the work
    m = MyModel.objects.get(pk=1)


if __name__ == '__main__':
    run()

Много раз вам нужны скрипты, чтобы играть с БД или более. Но вам нужно использовать способ django, то есть ORM, и играть со всем, что есть в вашем проекте.

Вы можете оформить заказ https://github.com/django-extensions/django-extensions

Вы создаете папку сценариев в своем домашнем проекте и записываете метод run. Приложение предоставит вам возможность легко запускать эти скрипты. Как это сделать.

Шаг 1 - Установите пакет. Шаг 2 - Создайте папку сценариев с init.py в корне проекта и добавьте "django_extensions" в свои приложения. Шаг 3- Создайте файл send_email_to_users.py в папке скриптов. Простой пример

from project.models import MyModel
from django.contrib.auth.models import User
from project.utils import send_email

def run():
    results = MyModel.objects.all()
    for res in results:
         send_mail(res.email)

Теперь из командной строки вы можете запустить

python manage.py runscript send_mail_to_users

Если это всего лишь один сценарий,

import django
django.setup()

from myapp.models.import MyModel 

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

Если вы ищете что-то для запуска в производственной среде, я бы создал команду управления в соответствии с предложением DanEEStar.

Другие вопросы по тегам