2

私はdjangoアプリケーションを開発しています。私の問題にとって重要なモジュールを以下に示します。

globals.py- >には、アプリケーション全体で使用される定数が含まれています。SITE_NAMESITE_DOMAINはそれらの2つであり、いくつかの文字列を埋めるために使用されます。これが私がそれらを定義する方法です:

from django.contrib.sites.models import Site
...
SITE_DOMAIN = Site.objects.get_current().domain
SITE_NAME = Site.objects.get_current().name

models.py- >モデルはこのモジュール内にあります。globals.pyからいくつかの定数をインポートします

some_command.py- >グローバルからもいくつかの定数をインポートするコマンド。

コマンドを実行すると、globals.pyから定数がインポートされ、循環インポートの問題が発生します。globals.py内で、 sitesアプリからget_current()が呼び出され、sitesアプリglobals.pyからインポートされたmodels.pyをインポートします。同じように。

編集:

この循環インポートの問題が発生することなく、アプリケーションは問題なく実行されます。シェルからglobals.pyをインポートしても問題はありません。コマンドでさえ、 manage.pyを呼び出さなくてもシェルから実行できます。

では、循環インポートが原因でmanage.py some_commandが失敗するのはなぜですか?

前もって感謝します。

4

1 に答える 1

1

SITE_DOMAINとSITE_NAMEをglobals.pyに保存する必要がある特別な理由はありますか?これらはすでにサイトフレームワークから直接利用できます。

ドキュメントによると、サイトオブジェクトは最初にアクセスしたときにキャッシュされるため、インポートして直接使用しても問題はありません。

于 2009-07-23T15:10:39.020 に答える