5

サッチモをやっています。多くのアプリがあり、Product アプリのソースの一部を変更しました。

私の質問は、変更がサイト固有であるため、これを適切にオーバーライドするにはどうすればよいかということです。Satchmo フレームワーク全体をコピーして自分のプロジェクトに配置する必要がありますか?それとも、アプリの 1 つをコピーしてSatchmo>App>Productsに配置するだけでよいですか? (テンプレートのようなもの)

ありがとう

4

3 に答える 3

5

私が行った作業は、変更したアプリケーションをコピーすることです。この場合は satchmo\apps\productです。アプリをプロジェクト フォルダーにコピーしました。setting.py INSTALLED_APPSを から'product',に修正しました。'myproject.product',

これにより、このプロジェクトに対してのみこのアプリに加えた変更が反映され、元の製品アプリはそのまま残り、他のプロジェクトから通常どおり読み取ることができます。

于 2011-03-08T13:21:30.880 に答える
4

INSTALLED_APPSファイルに「Django アプリ」を追加するsettings.pyと、「python パス」にその名前のインポート可能な python モジュールが存在することを Django に伝えます。に保存されているリストの内容を表示することで、python パスを表示できますsys.path

Python (およびこの場合は Django) がモジュールをインポートしようとするときはいつでも、 にリストされている各ディレクトリsys.path を順番にチェックし、指定された名前に一致するモジュールを見つけると停止します。

問題の解決策は、カスタマイズした Django アプリ (Satchmoモジュールなど) を、「実際の」Satchmoモジュールのproductにチェックされる Python パス内の場所に配置することです。product

ディレクトリ構造がどのように配置されているかわかりませんので、基本的にここで推測していますが、あなたの場合、Satchmo アプリは のような場所に/satchmo/apps/あり、プロジェクトは にあるよう/my_custom_path/my_project/です。その場合、カスタマイズしたproductモジュールをに追加することをお勧めします/my_custom_path/my_project/product/。Djangosettings.pyファイルが存在するパスが常に最初productにチェックされるため、カスタマイズされたモジュールが最初に検出され、組み込みの Satchmo モジュールではなくインポートされることを意味します。

参考までに: Satchmo のインストールがモジュールのディレクトリをチェックする順序を確認するには、実行python manage.py shellしてプロンプトで do を実行しますimport sys; print sys.path

于 2011-02-28T03:00:52.310 に答える
2

通常は、Satchmo を fork して変更内容のコピーを保持するのが最善の方法だと思います。

Python パスを使用する場合は、アプリのディレクトリが他の (既定の) ディレクトリの前に表示されるようにしてください。私のテストでは、同じ名前のアプリ/モジュールが 2 つある場合、最初に見つかったものが使用されます。

于 2011-02-27T20:24:51.297 に答える