サーチ…


前書き

管理コマンドは、Djangoプロジェクトまたは基盤となるデータベースでアクションを実行できる強力で柔軟なスクリプトです。さまざまなデフォルトコマンドに加えて、独自のコマンドを書くことも可能です!

通常のPythonスクリプトと比較して、管理コマンドフレームワークを使用すると、面倒なセットアップ作業が自動的に行われます。

備考

管理コマンドは、次のいずれかから呼び出すことができます。

  • django-admin <command> [options]
  • python -m django <command> [options]
  • python manage.py <command> [options]
  • ./manage.py <command> [options] manage.pyに実行権限がある場合( chmod +x manage.py

Cronで管理コマンドを使用するには:

*/10 * * * * pythonuser /var/www/dev/env/bin/python /var/www/dev/manage.py <command> [options] > /dev/null

管理コマンドの作成と実行

Djangoでコマンドラインや他のサービス(ユーザ/リクエストが使用されていない)を使ってアクションを実行するには、 management commands使用できmanagement commands

Djangoモジュールは、必要に応じてインポートできます。

各コマンドに対して、別々のファイルを作成する必要がありmyapp/management/commands/my_command.py
managementディレクトリとcommandsディレクトリには空の__init__.pyファイルが必要です)

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

# import additional classes/modules as needed
# from myapp.models import Book

class Command(BaseCommand):
    help = 'My custom django management command'

    def add_arguments(self, parser):
       parser.add_argument('book_id', nargs='+', type=int)
       parser.add_argument('author' , nargs='+', type=str)

    def handle(self, *args, **options):
       bookid = options['book_id'] 
       author = options['author']
       # Your code goes here
        
        # For example:
        # books = Book.objects.filter(author="bob")
        # for book in books:
        #    book.name = "Bob"
        #    book.save()

class commandは、 BaseCommandまたはそのサブクラスの1つを拡張するために必須です。

管理コマンドの名前は、それを含むファイルの名前です。上記の例でコマンドを実行するには、プロジェクトディレクトリで次のコマンドを使用します。

python manage.py my_command

コマンドの開始には(モジュールのインポートのために)数秒かかることに注意してください。したがって、場合によっては、 management commands代わりにdaemonプロセスを作成することをお勧めしmanagement commands

管理コマンドの詳細

既存のコマンドのリストを取得する

使用可能なコマンドのリストは、次の方法で取得できます。

>>> python manage.py help

あなたがコマンドを理解していないか、オプションの引数を探しているなら、このように-h引数を使うことができます

>>> python manage.py command_name -h

ここでcommand_nameはあなたの望むコマンド名です。これはコマンドのヘルプテキストを表示します。

>>> python manage.py runserver -h          
>>> usage: manage.py runserver [-h] [--version] [-v {0,1,2,3}]
                           [--settings SETTINGS] [--pythonpath PYTHONPATH]
                           [--traceback] [--no-color] [--ipv6] [--nothreading]
                           [--noreload] [--nostatic] [--insecure]
                           [addrport]

Starts a lightweight Web server for development and also serves static files.

positional arguments:
  addrport              Optional port number, or ipaddr:port

optional arguments:
  -h, --help            show this help message and exit
  --version             show program's version number and exit
  -v {0,1,2,3}, --verbosity {0,1,2,3}
                        Verbosity level; 0=minimal output, 1=normal output,
                        2=verbose output, 3=very verbose output
  --settings SETTINGS   The Python path to a settings module, e.g.
                        "myproject.settings.main". If this isn't provided, the
                        DJANGO_SETTINGS_MODULE environment variable will be
                        used.
  --pythonpath PYTHONPATH
                        A directory to add to the Python path, e.g.
                        "/home/djangoprojects/myproject".
  --traceback           Raise on CommandError exceptions
  --no-color            Don't colorize the command output.
  --ipv6, -6            Tells Django to use an IPv6 address.
  --nothreading         Tells Django to NOT use threading.
  --noreload            Tells Django to NOT use the auto-reloader.
  --nostatic            Tells Django to NOT automatically serve static files
                        at STATIC_URL.
  --insecure            Allows serving static files even if DEBUG is False.

利用可能なコマンドのリスト

manage.pyの代わりにdjango-adminを使う

manage.pyを取り除き、代わりにdjango-adminコマンドを使用することができます。これを行うには、 manage.pyが手動で行う必要があります:

  • PYTHONPATHにプロジェクトパスを追加する
  • DJANGO_SETTINGS_MODULEを設定する
export PYTHONPATH="/home/me/path/to/your_project"
export DJANGO_SETTINGS_MODULE="your_project.settings"

これはpostactivateスクリプトでこれらの環境変数を設定できるvirtualenvで特に便利です。

django-adminコマンドは、ファイルシステムのどこにいても使用できるという利点があります。

組み込み管理コマンド

Djangoには、 python manage.py [command]か、manage.pyに+ x(実行可能)権限がある場合にのみ./manage.py [command]を使用して多数の管理コマンドが./manage.py [command]ます。以下は、最も頻繁に使用されるもののいくつかです:

使用可能なすべてのコマンドのリストを取得する

./manage.py help

Djangoサーバをlocalhost:8000で実行します。ローカルテストに不可欠

./manage.py runserver

プロジェクトのDjango設定がプリロードされた状態でPython(またはインストールされている場合はipython)コンソールを実行します(これを行わずにPython端末でプロジェクトの一部にアクセスしようとすると失敗します)。

./manage.py shell

モデルに加えた変更に基づいて、新しいデータベース移行ファイルを作成します。 移行を参照

./manage.py makemigrations

未適用の移行を現在のデータベースに適用します。

./manage.py migrate

プロジェクトのテストスイートを実行します。 ユニットテストを参照してください

./manage.py test

プロジェクトのすべての静的ファイルをSTATIC_ROOTSTATIC_ROOT指定されたフォルダに配置して、 STATIC_ROOT提供できるようにします。

./manage.py collectstatic

スーパーユーザーの作成を許可します。

./manage.py createsuperuser

指定したユーザーのパスワードを変更します。

./manage.py changepassword username

利用可能なコマンドの完全なリスト



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow