Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Что за штука такая "Обобщённые представления" [RSS Feed]

#1 Апрель 9, 2014 18:19:46

quix
Зарегистрирован: 2012-06-23
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Что за штука такая "Обобщённые представления"

На пальцах , на примерах, прошу, разъясните.

Офлайн

#2 Апрель 10, 2014 06:02:27

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Что за штука такая "Обобщённые представления"

Допустим, у нас есть Товар, представленный соответствующей моделью. Наверняка нам понадобится страница, отображающая список товаров (ProductListView), а так же вероятно понадобится страница показывающая детализацию отдельного товара (ProductDetailView). Что нужно в общем случае, чтобы сделать то и другое представление? Лучше сразу показать на примере.

class ProductListView(ListView):
    queryset = Product.objects.all()
    template_name = "product_list.html"
Собственно, это всё. В шаблоне у нас появится список object_list, по которому мы построим список товаров. Нужна паджинация? Не вопрос
class ProductListView(ListView):
    queryset = Product.objects.all()
    template_name = "product_list.html"
    paginate_by = 25
Теперь в контексте есть объект класса Paginator.
Обобщенное представление ListView берет на себя рутинные операции. Вам нужно как-то инициализировать (в общем случае декларативно) поведение этого представления, но реализация наследников ListView будет мало отличаться одна от другой.
Что нужно для ProductDetailView? Нужно знать id товара (передаем его в url-е) и модель. Всё! Этого достаточно для того, чтобы в шаблоне получить объект представляющий товар.
class ProductDetailView(DetailView):
    model = Product
    template_name = "product_detail.html"
И нам не надо колдовать с request, извлекать из него id, строить запрос к БД, передавать результат в контекст, это все реализовано в DetailView, а Вы повторно используете этот код.



Офлайн

#3 Апрель 10, 2014 10:39:09

quix
Зарегистрирован: 2012-06-23
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Что за штука такая "Обобщённые представления"

Спасибо очень полезная информация.

Офлайн

  • Начало
  • » Django
  • » Что за штука такая "Обобщённые представления"[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version