Страницы Django с похожей структурой, но разными компонентами
У меня есть главная веб-страница, на которой отображаются и перечисляются все фрукты (с описанием, ценой и т.д.), которые я продаю.
Теперь я хотел бы иметь другую страницу .../discount, которая отображает и перечисляет все фрукты, которые являются True для is_discount в одной из моих моделей.
По сути, страница .../дисконт является просто подмножеством главной страницы. У них одинаковая структура страницы и все остальное, за исключением того, что объявления на странице .../discount - это фруктовые товары со скидкой, тогда как на главной странице могут быть фруктовые товары со скидкой и без скидки.
Как я буду решать эту проблему?
Заранее спасибо.
Я бы просто использовал тот же шаблон и имел два представления: одно с обычными товарами, а другое со скидками.
Это можно сделать тривиально с помощью двух ListView
представлений классов. Установите одинаковый шаблон для каждого из них, затем реализуйте метод get_queryset
для каждого класса. В одном классе пусть он возвращает полный список элементов (постранично или как угодно), а в методе другого класса возвращает набор запросов, который был отфильтрован, чтобы возвращать только элементы со скидкой. Если вам нужны другие различия (например, разный заголовок для каждого товара), реализуйте get_context_data
также и возвращайте контекст, содержащий различия, а затем подключите их в шаблоне.
Это можно сделать с помощью представлений функций или простых подклассов View
, но ListView
обрабатывает большую часть шаблона за вас.