2012-01-05 70 views
2

我有一個可以看作是單獨頁面或另一個頁面(儘管ajax)的對象列表。Django通用ListView中的多個模板

因此,在我的模板中,我有一個「list_template.html」,它只有列表本身,當我在另一個頁面中查看列表時使用該列表,而「full_list_template.html」擴展了基礎模板並使用「include」標籤在其中包含「list_template」。

我想在兩種情況下使用相同的URL來獲取項目列表。我還使用通用的ListView來顯示對象列表。

幾個問題:

1)它使用相同的URL這兩種情況的好方法嗎?

2)如果是,我怎麼能有一個與ListView關聯的URL,並根據「請求」更改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']