2009-08-26 17 views
1

これは良い習慣であるかどうか疑問に思っています。私は通常、 "lib"ディレクトリの下にある再利用可能なdjango-appsとpython libを持っています。次に、プロジェクトルートの下に直接 "templates"ディレクトリがあり、デフォルトのアプリケーションテンプレートをlib/django-app/templatesからプロジェクト "templates"ディレクトリにコピーし、レイアウト変更を変更します。django再利用可能なアプリケーションとdjangoプロジェクトの構造

いつか問題のサイトの再利用可能なアプリケーションの動作を変更/修正する必要があるので、私は自分のプロジェクトの下に「新しいアプリケーション」を作成し、必要に応じて修正したいと思います。これにより、再利用可能なアプリをうまくアップグレードできます。

これは方法ですか?良い方法がありますか?

ありがとうございました。

答えて

3

再利用可能なアプリを直接取得して変更するのは、実際には良い方法ではありません。そうすれば、再利用可能なアプリケーションが新しい機能を取得したり、そのバグが修正されたりすると、新しいバージョンのアプリを簡単に取得できなくなります。

あなたのニーズに合っていない部品は、オーバーライドしてアプリをそのままにして修正することをお勧めします。 contribのDjangoのコメントアプリの例を見てみましょう。コメントモデルに必要なフィールドがすべてない場合は、オリジナルを継承するコメントのカスタムモデルを作成して修正し、必要な機能をこのように追加する必要があります。ドキュメントから:今

from django.contrib.comments.models import Comment 

class CommentWithTitle(Comment): 
    title = models.CharField(max_length=300) 

、私はコメントアプリを変更した、と私はまた、競合を心配することなくコメントアプリのソースを更新することができます。これを使用できるようにするために何かを追加する必要はありません。何かを取り除くか変更するときにも同様に機能します。

ビューとテンプレートでは、アプリ提供テンプレートを直接変更するのは悪い習慣です。私は実際には、テンプレートを指定するビューのキーワード引数を持つことによってこれを行うことを好む。デフォルトテンプレートを独自のテンプレートに置き換えたい場合は、URL設定から新しいテンプレートを指定することができます。今、私はテンプレートを変更するためのビューに触れる必要はありません、と私は自分のデフォルトのものを使用する代わりに使用していることを明らかにURLの設定を示しています。

+0

詳細を明確にしてくれてありがとう。あなたは私のすべての質問に答えた:) – wailer

関連する問題