DJANGO: Как отобразить или получить доступ к данным из ListView и DetailView на одной и той же странице / шаблоне?

Я хочу иметь возможность визуализировать, отображать или получать доступ к List-view и Detail-view на одной и той же странице или в шаблонах Django. Ниже приведено то, что я пробовал до сих пор. Вот ссылка, где я получил очень похожий, но ограниченный код решения этой проблемы. (DJANGO: Как получить доступ к данным из ListView и DetailView на одном шаблоне?).

В результате, когда я запускаю файл server.py, появляется совершенно пустая страница без единой ошибки даже в терминале. Пожалуйста, помогите мне решить эту проблему. БОЛЬШОЕ СПАСИБО

models.py

class Reports(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
    
    title = models.CharField(max_length=255) 
    name = models.CharField(max_length=255) 
    email = models.EmailField(max_length = 254)
    phone =  models.CharField(max_length=11) 
    address = models.CharField(max_length=255, blank=True, null=True)
    subject = models.CharField(max_length=255)
    message = models.TextField(blank=True, null=True)
    
    created = models.DateTimeField(auto_now_add=True)
    due = models.DateTimeField(auto_now_add=False, auto_now=False, blank=True, null=True)
    
    def __str__(self):
        return self.name
    
    class Meta:
        ordering = ('-created',)

views.py

from django.shortcuts import render, redirect
from django.views.generic import TemplateView
from django.views.generic.list import ListView
from django.views.generic.detail import DetailView

from datetime import timezone, tzinfo

from . models import Reports

# Create your views here.
class index(TemplateView):
    template_name = 'reports_list.html'

class ReportsListView(ListView):
    model = Reports
    # context_object_name = 'data'

    def get_queryset(self):
        return Reports.objects.filter(create_date__lte=timezone.now()).order_by('-create_date')

class Detail(DetailView):
    model = Reports

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        
        # Add in the reports list to context
        context['reports_list'] = Reports.objects.filter(create_date__lte=timezone.now()).order_by('-create_date')
        return context

reports_list.html

<ul class="index-list">
    
    {% for report in reports_list %}
        
        <li data-id= {{ report.pk }}>
            <a class="index-link" href="{% url 'reports:reports_detail' pk=report.pk %}">
                <span class="index-name">{{report.title}}</span>
            </a>
         </li> 

     {% endfor %}

</ul>

report_detail.html

{% extends 'reports_list.html' %}

{% block contentblock %}
    <h1>THIS IS DETAIL VIEW</h1>
    
    <div class="read-header">
        <div class="read-title">
            {{ reports.title }}
        </div>
    </div>
    
    <div class="read-subtitle">
        {{ reports.name }}
    </div>

    <div class="read-content">
        {{reports.message}}
    </div>  
{% endblock %}

urls.py

from django.urls import path
from . import views
from . views import index, Detail




urlpatterns = [
    
    path('', index.as_view(), name='index'),
    # path('Detail/<int:pk>/', Detail.as_view(), name='contact_detail'),

]

Я смог добиться этого, используя категорию подробностей/одной страницы и название/заголовок категории и отобразил их обе в одних и тех же шаблонах. Это действительно хорошо работает, теперь один URL/шаблон обслуживает оба названия категорий (отображая все названия/заголовки категорий) в качестве бокового меню, а на странице подробностей отображается один элемент

Вернуться на верх