2016-10-20 1 views
0

У меня есть 2 шаблона для рендеринга один listview, и я выбираю шаблон в соответствии с запросом url, заданным пользователем. Я знаю, что я могу добавить 2 класса для 2 шаблонов на 2 отдельных URL-адреса соответственно. НапримерКак изменить имена шаблонов в django listview в соответствии с запросом url?

class MyListView1(generic.ListView): 
    template_name = 'myapp/list_one.html' 
    ..... 
    ..... 

class MyListView2(generic.ListView): 
    template_name = 'myapp/list_two.html' 
    ..... 
    ..... 

Но есть способ, если я мог проверить запрос на URL-адрес внутри одного класса и сделать шаблон в соответствии с ним в одном классе списка следует? что-то вроде

class MyListView(generic.ListView): 

    if request.path == '/list1' 
     template_name = 'myapp/list_one.html' 
    if request.path == '/list2' 
     template_name = 'myapp/list_two.html' 

Я знаю, что это не правильный код, но только для визуализации

ответ

1

Всякий раз, когда вы хотите сделать что-то динамичное в общем зрения, она должна быть в методе. This page показывает методы, доступные для ListViews, и вы можете видеть, что он включает get_template_names(), который должен делать именно то, что вы хотите.

Альтернативой может быть два отдельных класса представления, каждый из которых определяет их собственное имя шаблона, которые наследуются от общего базового класса, который определяет остальную часть общей функциональности.

+0

спасибо, это сработало – Yogi

Смежные вопросы