22

私はdjangoをインストールしたばかりで、彼らのウェブサイトでチュートリアルを行っています。

コマンドラインで彼らの指示に従っていて、彼らは働いていますが、なぜだろうと思いますか?

たとえば、コマンド「manage.py startapp xyz」にアクセスするとパッケージが作成されますが、manage.py を調べると、次のコードしか含まれていません (django によって追加されたもので、manage.py には触れていません)。 )

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DjangoProject12.settings")

    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)

manage.py やその他の場所に startapp のメソッドがありません。これが django 固有のものなのか、それとも私の Python の知識に根本的なギャップがあるのか​​ はわかりません。ありがとうございました。

4

1 に答える 1

28

django.core.managementパッケージを調べる必要があります。execute_from_command_line()関数はコマンド ライン パラメーターを受け取り、sys.argvそこから取得します。

manage.py startapp xyzコマンド ラインで入力すると、sys.argvが に設定され['manage.py', 'startapp', 'xyz']ます。

これらは、実際の解析を行うメソッドを持つManagementUtilityインスタンスに渡されます。.execute()

パッケージ全体django.core.managementがモジュール式です。.commandsサブパッケージには、ツールのさまざまな標準コマンドが含まれていmanage.pyます。たとえばdjango.core.management.commands.startapp、サブコマンドを処理します。startapp

于 2013-04-19T14:03:12.747 に答える