from django.views.generic import ListView class RankingList(ListView): context_object_name = 'dynamics' template_name = 'ranking.html' def get_queryset(self): t = self.request.GET.get('type', '') if t: dynamics = Dynamic.objects.select_related('video').filter(video__label=t).order_by('-plays').all()[:10] else: dynamics = Dynamic.objects.select_related('video').order_by('-plays').all()[:10] return dynamics def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['searchs'] = Dynamic.objects.select_related('video').order_by('-search').all()[:4] context['labels'] = Label.objects.all() return context
时间: 2024-04-27 11:21:53 浏览: 165
这段代码定义了一个名为 RankingList 的类视图,继承自 Django 中的 ListView。其中,context_object_name 属性指定了返回给模板的查询结果的上下文变量名为 dynamics,template_name 属性指定了使用的模板文件为 ranking.html。
get_queryset 方法是 ListView 中用于获取查询结果集的方法,这里按照与 rankingView 中相同的逻辑进行查询,并返回查询结果。
get_context_data 方法是用于获取模板上下文数据的方法,这里通过调用父类的方法获取上下文数据,然后再添加查询结果 searchs 和 labels,并最终返回整个上下文数据字典。
阅读全文