Как мне выполнить произвольный сценарий в контексте моего проекта Django?

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

Я знаю, что могу вставить эти строки в верхнюю часть моего файла .py, и он будет работать в контексте Django:

import sys
sys.path.append('/location/of/projet')
from django.core.management import setup_environ
import settings
setup_environ(settings)

Я подумал, что будет проще создать команду управления, которая принимает аргумент, питон модуль для запуска и выполняет его в среде Django. Вот команда runmodule, которую я написал:

from django.core.management.base import BaseCommand, CommandError

class Command(BaseCommand):
    help = "Runs an arbitrary module, in the Django environment, for quick prototyping of code that's too big for the shell."

    def handle(self, *args, **options):
        if not args:
            return
        module_name = args[0]

        try:
            __import__(module_name)
        except ImportError:
            print("Unable to import module %s.  Check that is within Django's PYTHONPATH" % (module_name))

Похоже, она работает - я могу вставить некоторый код в модуль и передать его в качестве аргумента этой команде, и она будет выполнена, например

python manage.py runmodule myapp.trysomethingout

который выполнит myapp / trysomethingout.py. Это лучший способ сделать это?

11
задан LS55321 11 June 2011 в 20:56
поделиться