2016-10-20 50 views
0

我有2個模板來呈現一個 listview,我根據用戶給出的請求url選擇模板。我知道,我可以分別在2個獨立的url上爲2個模板添加2個類。例如如何根據url請求在django listview中更改模板名稱?

class MyListView1(generic.ListView): 
    template_name = 'myapp/list_one.html' 
    ..... 
    ..... 

class MyListView2(generic.ListView): 
    template_name = 'myapp/list_two.html' 
    ..... 
    ..... 

但是,有沒有辦法,如果我可以檢查一個類的內部URL請求和渲染根據它的ListView一個類裏面的模板?像

class MyListView(generic.ListView): 

    if request.path == '/list1' 
     template_name = 'myapp/list_one.html' 
    if request.path == '/list2' 
     template_name = 'myapp/list_two.html' 

我知道這是不是一個有效的代碼,但只是爲了形象化

回答

1

每當你想要做的事動態的通用視圖,它需要在一個方法。 This page顯示ListViews可用的方法,並且您可以看到它包含get_template_names(),它應該完全按照您的要求進行。

另一個選擇是擁有兩個獨立的視圖類,每個視圖類都定義了自己的模板名稱,該類繼承自定義其餘共享功能的公共基類。

+0

謝謝,它的工作 – Yogi