3

manage.py と django-admin.py の違いを知るために、django docといくつかの SO 投稿を読みました。

彼らは皆言う:

manage.py は、Django プロジェクトごとに自動的に作成されます。manage.py は django-admin.py の薄いラッパーであり、django-admin.py に委譲する前に次の 2 つの処理を行います。

  1. プロジェクトのパッケージを sys.path に置きます。
  2. プロジェクトの settings.py ファイルを指すように DJANGO_SETTINGS_MODULE 環境変数を設定します。

そこで、これら2つのファイルのソースコードを確認しました(最新バージョンなのでドキュメントです)。

それから私は混乱しています。manage.py2 番目のこと: DJANGO_SETTINGS_MODULE 環境変数を設定します。それに加えて、これら 2 つのスクリプトに違いはありません。

[ジャンゴ-admin.py]

#!/usr/bin/env python
from django.core import management

if __name__ == "__main__":
    management.execute_from_command_line()

[manage.py]

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

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name }}.settings")

    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)

なんで?django のドキュメントは古くなっていますか? それとも私はここで何かを逃したのですか?プロジェクトのパッケージを sys.path に置くコードはどこにあるのでしょうか?

4

2 に答える 2

3

は、ここにあるステートメントを使用してここsys.pathで更新されます。実行パスは次のとおりです。handle_default_options(options)

  • execute_from_command_line(argv)(あなたのmanage.py)
  • utility.execute() ここ
  • handle_default_options(options) ここ

Command管理コマンドの基本クラスとして使用されるクラスでも同じメソッドが使用されます。

于 2013-10-20T12:26:58.460 に答える