如何根据url请求更改django listview中的模板名称?

Yog*_*ogi 7 python django

我有 2 个模板来渲染一个列表视图,我根据用户给出的请求 url 选择模板。我知道,我可以分别在 2 个单独的 url 上为 2 个模板添加 2 个类。例如

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

class MyListView2(generic.ListView):
     template_name = 'myapp/list_two.html'
     .....
     .....
Run Code Online (Sandbox Code Playgroud)

但是有没有一种方法可以检查一个类中的 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'
Run Code Online (Sandbox Code Playgroud)

我知道这不是有效的代码,但只是为了可视化

Dan*_*man 9

每当您想在通用视图中动态执行某些操作时,它都需要在方法中。此页面显示了 ListViews 可用的方法,您可以看到它包括get_template_names()哪些方法应该完全符合您的要求。

另一种选择是拥有两个单独的视图类,每个视图类都定义自己的模板名称,它们继承自定义其余共享功能的公共基类。