gpt4 book ai didi

python - 如何在CBV中实现get_template_names()函数?

转载 作者:太空宇宙 更新时间:2023-11-03 21:47:30 24 4
gpt4 key购买 nike

我有同一个模型的两个 ListView ,我想使用 get_template_names() 函数为一个 View 指定模板,但无法解决如何执行此操作...

这是我的两个 View :

class bloglistview(LoginRequiredMixin,ListView):
model = Blog


def get_queryset(self):
return Blog.objects.filter(User=self.request.user).order_by('id')

def get_context_data(self, **kwargs):
context = super(bloglistview, self).get_context_data(**kwargs)
context['categories_list'] = categories.objects.all()
return context

class allbloglistview(LoginRequiredMixin,ListView):
model = Blog

def get_queryset(self):
return Blog.objects.all().order_by('id')

def get_context_data(self, **kwargs):
context = super(allbloglistview, self).get_context_data(**kwargs)
context['categories_list'] = categories.objects.all()
return context

有人可以帮我解决这个问题吗?

最佳答案

除非模板名称​​取决于某些参数(URL 参数、GET 参数、POST 参数、COOKIES等)您只需指定 template_name 属性,例如:

class bloglistview(LoginRequiredMixin,ListView):

model = Blog
<b>template_name = 'my_fancy_template.hmtl'</b>

def get_queryset(self):
return Blog.objects.filter(User=self.request.user).order_by('id')

def get_context_data(self, **kwargs):
context = super(bloglistview, self).get_context_data(**kwargs)
context['categories_list'] = categories.objects.all()
return context

如果模板动态解析(例如取决于某些 URL 参数或其他参数),您可以覆盖 get_template_names 函数,该函数应返回 >字符串列表:按顺序搜索的模板的名称。例如:

class bloglistview(LoginRequiredMixin,ListView):

model = Blog

def <b>get_template_names</b>(self):
if self.request.COOKIES.get('mom'): # a certain check
return ['true_template.html']
else:
return ['first_template.html', 'second_template.html']

def get_queryset(self):
return Blog.objects.filter(User=self.request.user).order_by('id')

def get_context_data(self, **kwargs):
context = super(bloglistview, self).get_context_data(**kwargs)
context['categories_list'] = categories.objects.all()
return context

但正如您可能看到的那样,这更加复杂,因此仅当模板名称取决于“上下文”时才应使用。

get_template function [GitHub]将确定使用哪个模板。如果第一个模板不存在,则将尝试下一个模板,直到函数找到模板。

关于python - 如何在CBV中实现get_template_names()函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52387438/

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