私のプロジェクト Django アプリの 1 つに、日付ベースのオブジェクトのクラスベースのジェネリック ビューを変更するカスタム ミックスインがあります。
class MyCoolMixin(ArchiveIndexView):
"""
ArchiveIndexView mixin with my customizations
"""
allow_empty = True
make_object_list = True
date_field = 'pub_date'
# Pass in some custom request vars
def get(self, request, *args, **kwargs):
# Cool stuff here
# including getting
# my context data
return self.render_to_response(context)
class MyNewArchiveIndexView(MyCoolMixin, ArchiveIndexView):
pass
それはうまくいきます。実際、非常に優れているため、この特定のアプリだけでなく、サイト全体に適用したいと考えています. ただし、Django 1.4 のプロジェクト レイアウトでは、サイト全体のクラスベースのジェネリック ビュー オーバーライド mixin をどこに置くべきかわかりません。ルートのviews.py?
/path/to/myproject/myproject/views.py
そして、その変更された汎用ビューをすべてのアプリにインポートして、それが利用可能であることを確認する必要がありますか?
さらに、私のさまざまなアプリ モデルでは、さまざまな日付フィールドがあります (場合によってはpub_dateまたはstart_dateです)。一般的なビューのdate_field設定をオーバーライドできるように、それをどのようにミックスインに渡す必要があるか考えていますか?
ベスト プラクティスを探していますが、新しいクラス ベースのジェネリック ビュー + ミックスインのベスト プラクティスは見たことがありません。