私はDjangoを初めて使い、サードパーティのアプリケーションがどのように統合されているかについてかなり混乱しています。 DRYの私の(おそらく素朴な)解釈では、私自身のコードだけでなく他の人のコードもコピー/貼り付けを最小限に抑えたいので、たとえばcontrib.authをほとんど黒として使うというパターンに満足していますauth.Userに関する追加情報が必要だった場合(UserProfileオブジェクトまたは継承でauth.Userを拡張することによって)そして、これは私がほとんどのサードパーティーのアプリを使うことを想像したものでした。サードパーティのdjangoアプリケーションとテンプレートを統合
しかし、これは非常に困難であることがすぐに分かったので、私は、プロジェクトフォルダ内にあるサードパーティのすべてのアプリケーションの「コピー」を、基本的には最小限の変更でコピー全体にすることをやめました。最終的なストローは私が基本的なブログ(私はdjango-basic-blogに定住した)を追加したいだけで、単一のテンプレートを変更する必要がありました。私はプロジェクトの中でそのアプリケーションのコピーを単一のテンプレートが変更されました。
私の質問:私はちょうど単一のテンプレートを変更する必要があり、この特定のケースでは
- 、これは私ができる最善の(アプリケーション全体をコピー)ですか?私がただ一つのモデルを変更する必要があったなら、サードパーティーのアプリケーションを尊重して尊重し、自分のアプリでモデル継承を行うことができます...
- 一般に、私のプロジェクトの下でアプリケーションをコピーし、小さなビットは狂って無駄で汚れているように感じます。頻繁に更新されるサードパーティのアプリを使用している場合、変更を同期させるのは苦痛になるような気もします。私はちょうど爆弾を愛することを学ぶべきか、いくつかの明白な建築パターン/ Djangoが提供した援助は私が行方不明ですか?
ああありがとうございました。それは私の最初の質問に完全に答えます。 – yanzhang
あなたの回答から、コードを明示的に変更せずに第三者モジュールを使用する方法がほとんど常にあることを暗示しているようです。私はあなたがテンプレートについて私に教えてくれたことを推測しようと思います。それは、サードパーティーのすべてのアプリケーション "TheirApp"のようです。私はTheirAppからモデルとビューをインポート/拡張する "MyApp" TEMPLATE_LOADERSで注文が正しいことを確認して、TheirAppとMyAppの両方を設定に追加します。これは正しいパターンですか? – yanzhang
あなたのプロジェクトには通常、テンプレートがあるところに「/ templates」ディレクトリがあります。そこにサードパーティのテンプレートを入れてください。 –