Если имя шаблона не зависит от определенных параметров (параметры 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
[GitHub] определит, какой шаблон использовать. Если первый шаблон не существует, будет пробоваться следующий, пока функция не найдет шаблон.