Вывод нескольких классов на 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)
→ Ссылка