django - DJANGO:如何从同一模板上的 ListView 和 DetailView 访问数据?
问题描述
我正在尝试创建一个包含两个部分的网页。
- 所有项目的索引列表(始终存在)
- 所选索引项的详细信息
我为它创建了一个列表视图和一个详细视图,但问题是不能在同一个模板上调用这两个视图。
我试图列出“reports_list.html”中的所有项目,然后将此模板继承到“report_detail.html”以查看索引列表是否保留但没有。
有没有办法做到这一点?
代码:
视图.py
from django.shortcuts import render
from django.views.generic import TemplateView, DetailView, ListView
from .models import Reports
from django.utils import timezone
class index(TemplateView):
template_name = 'reports_list.html'
class ReportsListView(ListView):
model = Reports
def get_queryset(self):
return Reports.objects.filter(create_date__lte=timezone.now()).order_by('-create_date')
class Detail(DetailView):
model = Reports
报告列表.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.subtitle }}
</div>
<div class="read-content">
{{reports.content}}
</div>
{% endblock %}
解决方案
您所要做的就是将额外的上下文数据传递DetailView
给列表以查看,因为您在此处扩展模板。文档
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
推荐阅读
- c++ - gcc 7.3.0 找不到动态库符号
- couchbase - 通过 REST API 更新 Couchbase FTS 索引
- sql - MS SQL Server 多列独立排序
- javascript - Angular 6 无法在视图上呈现数据
- javascript - GET http://localhost:8080/dist/bundle.js net::ERR_ABORTED 404(未找到)
- excel - 我的 Excel 加载项添加后一直消失
- spring-boot - Springboot 错误消息插值不适用于自定义验证器
- java - 使用 switch 语句并计算和显示所选书籍类型的总价格的程序
- sql-server - Sql Server 复制 - 添加文章而不使用向导
- python - BeautifulSoup Instagram 帖子 html 抓取