2012-01-05 13 views
2

私は、別のページまたは別のページ(ajaxにもかかわらず)として見ることができるオブジェクトのリストを持っています。一般的な複数のテンプレートDjangoのListView

私のテンプレートでは、別のページ内のリストを表示しているときに使用するリスト自体と、ベースを拡張する「full_list_template.html」だけを持つ「list_template.html」があります"include"タグを使用して "list_template"をインクルードします。

両方の状況で同じURLを使用してアイテムのリストを取得したいとします。また、ジェネリックListViewを使ってオブジェクトのリストを表示しています。

いくつかの質問:

1)それは両方の状況で同じURLを使用するための良い方法ですか?

2)はいの場合、どのようにしてListViewに関連付けられたURLを1つ作成し、「要求」に従ってtemplate_nameパラメータを変更できますか?

答えて

4

はい、どちらの状況でも同じURLを使用し、request.is_ajax()の値をチェックして適切なテンプレートを設定できます。今度はtemplate_nameクラス属性を使用する代わりに、get_template_names()メソッドをオーバーライドします(このメソッドは、テンプレートのリストを返す必要があります。最初に見つかったものが使用されます)。

class MyView(ListView): 
    def get_template_names(self): 
     if self.request.is_ajax(): 
      return ['list_template.html'] 
     return ['full_list_template.html'] 
関連する問題