Вывод нескольких классов на 1 url адрес
Обращаюсь с такой проблемой: нужно вывести несколько классов (на данный момент их 2), которые содержатся в views.py на 1 url страницу. Цель: вывод 3 постов одного типа (rig) и 1 пост другого типа (article) на главную страницу. На сайте присутствуют отдельные страницы для вывода всех rig и article Файл views.py:
from django.shortcuts import render
from rigs.models import Rig
from news.models import Article
from django.views.generic import ListView
class ShowRigView(ListView):
model = Rig
template_name = 'main_page/main_page.html'
context_object_name = 'rig'
ordering = ['-date']
paginate_by = 3
def get_context_data(self, **kwards):
ctx = super(ShowRigView, self).get_context_data(**kwards)
return ctx
class ShowArticleView(ListView):
model = Article
template_name = 'main_page/main_page.html'
context_object_name = 'article'
ordering = ['-date']
paginate_by = 1
def get_context_data(self, **kwards):
ctx = super(ShowArticleView, self).get_context_data(**kwards)
ctx['title'] = 'MCStore'
return ctx
class ShowMainView(ShowRigView, ShowArticleView):
template_name = 'main_page/main_page.html'
Файл urls.py:
from django.urls import path
from . import views
urlpatterns = [
path('', views.ShowMainView.as_view(), name='main_page'),
]
Есть идеи, как это реализовать? У меня был более простой, но непонятный мне вариант. Можно ли добавить 2 класса в urls.py? Типо такого:
from django.urls import path
from . import views
urlpatterns = [
path('', views.ShowRigView.as_view(), views.ShowArticleView.as_view() name='main_page'),
]
Очень надеюсь на помощь и буду благодарен.
Ответы (1 шт):
Автор решения: AlTheOne
→ Ссылка
Примерно это будет выглядеть так:
# urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.main_page, name='main_page'),
]
# views.py
def main_page(request):
articles = Article.objects.all().order_by('-date')
rigs = Rig.objects.all().order_by('-date')
response_data = {
'articles': articles,
'rigs': rigs,
}
return render(request, 'main_page/main_page.html', response_data)