Несколько шаблонов в общем ListView в Django - PullRequest
2 голосов
/ 06 января 2012

У меня есть список объектов, которые можно увидеть как на отдельной странице, так и на другой странице (хотя ajax).

Итак, в моих шаблонах у меня есть "list_template.html", который имеет толькосам список, который я использую при просмотре списка на другой странице и «full_list_template.html», который расширяет базовый шаблон и использует тег «include» для включения в него «list_template».

Я хотел бы использовать один и тот же URL для получения списка элементов в обеих ситуациях.Я также использую универсальный ListView для отображения списка объектов.

Несколько вопросов:

1) это хороший подход для использования одного и того же URL для обеих ситуаций?

2) если да, как мне связать один URL-адрес с ListView и изменить параметр template_name в соответствии с «запросом»?

1 Ответ

5 голосов
/ 06 января 2012

Да, вы можете использовать один и тот же URL для обеих ситуаций и установить соответствующий шаблон, проверив значение request.is_ajax().Теперь вместо использования атрибута класса template_name переопределите метод get_template_names() (этот метод должен вернуть список шаблонов, будет использован первый найденный):

class MyView(ListView):
    def get_template_names(self):
        if self.request.is_ajax():
            return ['list_template.html']
        return ['full_list_template.html']
...