django-endless-paginationのドキュメントを読むと、 @page_template() デコレーターを使用するだけで、Ajaxページング機能をクラスベースのビューに拡張できると書かれています... :
class ExtendedListView(ListView):
template_name = 'global_template.html'
@method_decorator(@page_template('path_to_updatable_content_only_template'))
def dispatch(self, *args, **kwargs):
return super(ExtendedListView, self).dispatch(*args, **kwargs)
ビュー関数はエラーを出力しませんが、別のページに移動すると、デコレーターで定義されたテンプレートではなく、ターゲットに「global_template」が読み込まれます。
この実装が実際に機能するかどうかを誰かが知っていて、私が間違いを犯している場合は、指摘してください。正しい方法で使用できれば幸いです。
私はなんとか回避策を思いついたので、誰かがこの同じ問題を抱えていて、これに対する準拠した回答がない場合は、これを行うことができます:
class ExtendedListView(ListView):
template_name='global_template_path'
'''
render_to_response ¿hack? so that i can render only the updatable DOM part template
'''
def render_to_response(self, context):
if self.request.is_ajax():
self.template_name = 'path_to_updatable_content_only_template'
return super(ExtendedListView, self).render_to_response(context)
else:
return super(ExtendedListView, self).render_to_response(context)
乾杯!