12

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

4

3 に答える 3

9

正しい django コンテキストでスクリプトを実行する最善の方法は、DJANGO_SETTINGS_MODULE環境変数を設定モジュール (およびPYTHONPATH必要に応じて適切なもの) に設定することです。Windows では、これは通常、以下を実行することを意味します。

set DJANGO_SETTINGS_MODULE=setting 

そしてbashで:

export DJANGO_SETTINGS_MODULE=setting 

モデルなどをインポートできるようになりました。

https://docs.djangoproject.com/en/dev/topics/settings/#designating-the-settingsを参照してください。

settingsモジュールをインポートするには、 from django.conf import settings. DJANGO_SETTINGS_MODULEこれは、自動的に settings.py を使用する代わりにを考慮します。

于 2011-06-12T11:07:58.537 に答える