シェルを使用しているかのように、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を実行します。これはこれを行うための最良の方法ですか?