Django
管理コマンド
サーチ…
前書き
管理コマンドは、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_ROOT
、 STATIC_ROOT
指定されたフォルダに配置して、 STATIC_ROOT
提供できるようにします。
./manage.py collectstatic
スーパーユーザーの作成を許可します。
./manage.py createsuperuser
指定したユーザーのパスワードを変更します。
./manage.py changepassword username