Django管理コマンドのドキュメントには、app/management/commandsフォルダに作成されるすべてのコマンドが表示されています。 app/management/commands/installやapp/management/commands/maintenanceなどのサブフォルダにコマンドを置くことは可能ですか?これはどのようにして行われますか?Django:サブフォルダへの管理コマンドの分割
5
A
答えて
5
残念なことに、Django 1.4の時点で、これを行う方法はないようです。あなたが見ることができるように
def find_commands(management_dir):
"""
Given a path to a management directory, returns a list of all the command
names that are available.
Returns an empty list if no commands are defined.
"""
command_dir = os.path.join(management_dir, 'commands')
try:
return [f[:-3] for f in os.listdir(command_dir)
if not f.startswith('_') and f.endswith('.py')]
except OSError:
return []
が、それだけで任意のサブフォルダを無視して、直接commands
フォルダ内のファイルを考慮:django.core.management.__init__.py
のための情報源は、このメソッドを持っています。実際Command
インスタンスを作成するコードはこれですので、しかし、あなたは「モンキーパッチ」何とかこの関数は、コードの残りの部分は、正常に動作するかどうか:だから
def load_command_class(app_name, name):
"""
Given a command name and an application name, returns the Command
class instance. All errors raised by the import process
(ImportError, AttributeError) are allowed to propagate.
"""
module = import_module('%s.management.commands.%s' % (app_name, name))
return module.Command()
あなたが持っていた場合、コマンドはsubfolder.command
にそれを命名します正しいスクリプトをロードし、適切なクラスをインスタンス化します。
しかし、実用的な観点からは、私はそれを使用していません。確かに、 "namespace'd"コマンドを使用すると便利ですが、必要に応じてすべてのコマンドに接頭辞を付け、セパレータとして別のもの(例えば_
など)を使用することができます。コマンド名の長さと、端末に入力するのに必要なキーストロークの数は同じになります...
関連する問題
- 1. Django管理コマンドImportError
- 2. カスタムdjango管理コマンドのデバッグ
- 3. カスタム管理コマンドのDjangoロギング
- 4. Django管理コマンドCron on Dotcloud
- 5. Djangoの管理コマンドのMySQLエラー
- 6. 分割サブフォルダ:
- 7. Celery-Django:Celeryとdjangoの管理コマンド
- 8. Djangoの管理コマンドDB接続
- 9. Djangoの管理者権限へのアクセス
- 10. django管理コマンドを作成する
- 11. リクエストライブラリ付きDjango管理者へのアクセス
- 12. サブフォルダの「三角形」へのパスを分割する
- 13. Djangoの管理
- 14. Djangoの管理 -
- 15. Djangoの管理
- 16. Django管理サイトのDjango管理サイトのdjango-nonrelから
- 17. Django 1.8からDjango 1.10への静的ファイルの管理方法
- 18. Django管理者:データベース管理
- 19. django管理のDjangoサブパッケージ
- 20. Djangoのアプリ(...)/管理/
- 21. Djangoの管理フォーム
- 22. Djangoのトランザクション管理
- 23. Djangoの管理インライン
- 24. は、Djangoの管理
- 25. Djangoの管理 - save_formset
- 26. Djangoのユーザー管理
- 27. Django管理のオーバーライドセーブメソッド
- 28. Django、ユーザーデータの管理
- 29. Djangoの管理パネル
- 30. Djangoの管理カスタムビュー
あなたの問題に関する詳細を教えてください。それはあなたが探しているものですか? https://docs.djangoproject.com/en/dev/howto/custom-management-commands/ – Marat
私はapp/management /コマンドのサブフォルダにコマンドを入れたいと思っています。私はその質問にもっと詳細を加えました。 –