Иногда я хочу выполнить файл в контексте моего проекта Django, как если бы я использовал оболочку, но с удобством использования текстового редактора.Это главным образом для того, чтобы что-то опробовать или быстро прототипировать некоторые функции, прежде чем поместить их в представление, тестирование, повторяющуюся задачу или команду управления.
Я знаю, что могу вставить эти строки в начало моего файла .py, и он будет работать в контексте Django:
import sys
sys.path.append('/location/of/projet')
from django.core.management import setup_environ
import settings
setup_environ(settings)
Я думал, что было бы легче сделатькоманда управления, которая принимает аргумент, запускает модуль python и выполняет его в среде 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.Это лучший способ сделать это?