gpt4 book ai didi

django - 如何在基于 Django 类的 View 中更改模板

转载 作者:行者123 更新时间:2023-12-05 04:47:54 26 4
gpt4 key购买 nike

如果我有一个基于类的 View ,例如:

class equipmentdashboardView(LoginRequiredMixin,ListView):
context_object_name = 'equipmentdashboard'
template_name = 'equipmentdashboard.html'
login_url = 'login'

def get_queryset(self):
#some stuff

如何根据查询更改 template_name?我想做类似的事情:

class equipmentdashboardView(LoginRequiredMixin,ListView):
context_object_name = 'equipmentdashboard'
if self.request.user.PSScustomer.customerName == 'Customer X':
template_name = 'equipmentdashboard_TL.html'
else:
template_name = 'equipmentdashboard.html'
login_url = 'login'

def get_queryset(self):
#some stuff

但是你不能访问get_queryset之前的请求。或者也许有更简单的方法来实现相同的行为?

最佳答案

您可以覆盖 .get_template_names() method [Django-doc] , 并返回匹配的模板名称,所以:

class equipmentdashboardView(LoginRequiredMixin,ListView):
context_object_name = 'equipmentdashboard'
login_url = 'login'

def <strong>get_template_names</strong>(self):
if self.request.user.PSScustomer.customerName == 'Customer X':
return ['equipmentdashboard_TL.html']
else:
return ['equipmentdashboard.html']

.get_template_names() 应该返回模板名称的 iterable。如果模板不存在,Django 将遍历列表,从而呈现第一个存在的可迭代模板。在这种情况下,我们可以返回一个单例列表,其中包含 Django 应该尝试呈现的唯一模板。

关于django - 如何在基于 Django 类的 View 中更改模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68320830/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com