我有 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)
我知道这不是有效的代码,但只是为了可视化
每当您想在通用视图中动态执行某些操作时,它都需要在方法中。此页面显示了 ListViews 可用的方法,您可以看到它包括get_template_names()哪些方法应该完全符合您的要求。
另一种选择是拥有两个单独的视图类,每个视图类都定义自己的模板名称,它们继承自定义其余共享功能的公共基类。